我的表中有以下数据:
id: 1, name: TOM, visible: 1, field_1: EMPTY, field_2: EMPTY, field_3: EMPTY。
SELECT id, name FROM table
WHERE name <> 'TOM' AND visible = 1
AND field_1 <> '' OR field_2 <> '' OR field_3 <> ''
我只想选择名称不同于“name1”且至少有一个字段不为空的行。
我预计此查询没有结果,但我得到:id,TOM 就像 where name 条件被覆盖。
最佳答案
您的问题是优先级:将 OR 括起来:
SELECT id, name
FROM table
WHERE name <> 'TOM'
AND visible = 1
AND (field_1 <> '' OR field_2 <> '' OR field_3 <> '')
关于mysql - sql查询where条件与或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438109/