[英]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.