簡體   English   中英

基於SELECT列的WHERE條件下的MySQL IF

[英]MySQL IF in WHERE condition Based On SELECT Column

我有這個簡單的(實際上是在簡化實際情況)SQL命令:

SELECT Username, Message
FROM Mail
WHERE DeleteBySender = '0'
LIMIT 1

但是由於某種原因,我有一個特殊條件,即: 如果Mail.Username ='johndoe',則WHERE子句不再 DeleteBySender = '0'而是 DeleteByReceiver = '0'

總之,如何使基於Mail.Username結果的動態WHERE子句?

可以用單個SQL命令完成嗎? 因為如果不是這樣,在我的真實情況下,它將導致PHP腳本編寫更加復雜。

** UPDATE:我真正希望的,用簡單的英語說:如果Mail.Username不是johndoe,SQL命令將如下所示:

SELECT Username, Message
FROM Mail
WHERE DeleteBySender = '0'
LIMIT 1

但是如果Mail.Username是johndoe,則SQL命令將如下所示:

SELECT Username, Message
FROM Mail
WHERE DeleteByReceiver = '0'
LIMIT 1

使用OR子句破壞邏輯的SQL 解決方案如下:

SELECT Username, Message
FROM Mail
WHERE (Username != 'johndoe' AND DeleteBySender = '0')
OR (Username = 'johndoe' AND DeleteByReceiver = '0')
LIMIT 1

注意: LIMIT 1是有關的。 在不知道您的數據集的情況下,這可能會返回多個結果。 您需要測試。

SELECT 
    Username, 
    Message
FROM Mail
WHERE (IF(Username='johndoe',DeleteByReceiver = 0,DeleteBySender =0))
LIMIT 1
SELECT Username, Message
FROM Mail
WHERE (Username = 'johndoe' AND DeleteByReceiver='0') OR DeleteBySender = '0'
LIMIT 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM