基于 SELECT 列的 WHERE 条件中的 MySQL IF

Sai*_*son 1 php mysql

我有这个简单的(实际上我是在简化实际情况)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)

Jas*_*ary 5

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是有关。在不知道您的数据集的情况下,这可能会返回多个结果。你需要测试。