【发布时间】:2019-10-31 13:36:36
【问题描述】:
假设我有一个包含 3 列 id、用户和状态的表。 我需要找到状态为 1 或 null 且 user = 'someName'
的行我正在寻找这样的条件: if (user == 'name' && status == 1 || status == null)
我如何在 mysql 中做到这一点
【问题讨论】:
标签: mysql sql database where-clause
假设我有一个包含 3 列 id、用户和状态的表。 我需要找到状态为 1 或 null 且 user = 'someName'
的行我正在寻找这样的条件: if (user == 'name' && status == 1 || status == null)
我如何在 mysql 中做到这一点
【问题讨论】:
标签: mysql sql database where-clause
只是:
WHERE user = 'someName' AND (status = 1 OR status IS NULL)
这可以简化为更短(但可能效率更低)
WHERE user = 'someName' AND IFNULL(status, 1) = 1
请注意,这与您的伪代码并不完全相同:
user == 'name' && status == 1 || status == null
相当于:
( user == 'name' && status == 1 ) || status == null
翻译为:
WHERE (user = 'someName' AND status = 1) OR status IS NULL
但是,我对您的问题的理解是,您是指上述第一个条件。
【讨论】:
你可以试试下面 -
SELECT * FROM TAB
WHERE user = 'Some Name'
AND (status = 1 OR status IS NULL)
【讨论】:
user == 'name' && status == 1 || status == null 与 user = 'name' AND (status = 1 OR status IS NULL) 不同。 AND 的优先级高于 OR