我有这个简单的(实际上我是在简化实际情况)SQL 命令:
SELECT Username, Message
FROM Mail
WHERE DeleteBySender = '0'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,我有特殊的条件,那就是:
如果Mail.Username =“为johndoe”然后WHERE子句不是 DeleteBySender = '0'了,但是 DeleteByReceiver = '0'。
简而言之,如何根据 Mail.Username 结果制作动态 WHERE 子句?
可以用单个 SQL 命令完成吗?因为如果不是,在我的真实情况下,它会导致 PHP 脚本更加复杂。
**更新:我真正期望的是,简单的英语:如果 Mail.Username 不是 johndoe,SQL 命令将是这样的:
SELECT Username, Message
FROM Mail
WHERE DeleteBySender = '0'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但如果 Mail.Username 是 johndoe,SQL 命令将是这样的:
SELECT Username, Message
FROM Mail
WHERE DeleteByReceiver = '0'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
SQL 中的解决方案使用OR子句来分解您的逻辑,如下所示:
SELECT Username, Message
FROM Mail
WHERE (Username != 'johndoe' AND DeleteBySender = '0')
OR (Username = 'johndoe' AND DeleteByReceiver = '0')
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
注:该LIMIT 1是有关。在不知道您的数据集的情况下,这可能会返回多个结果。你需要测试。