繁体   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