Mysql Sql查询where条件和或
我的表格中有以下数据: id:1,名称:TOM,可见:1,字段_1:空,字段_2:空,字段_3:空Mysql Sql查询where条件和或,mysql,where,where-clause,Mysql,Where,Where Clause,我的表格中有以下数据: id:1,名称:TOM,可见:1,字段_1:空,字段_2:空,字段_3:空 SELECT id, name FROM table WHERE name <> 'TOM' AND visible = 1 AND field_1 <> '' OR field_2 <> '' OR field_3 <> '' 我只想选择名称不同于“name1”且至少有一个字段不为空的行 我希望这个查询没有结果,但我得到:id,T
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条件被覆盖一样 and运算符的优先级高于or,有关更多详细信息,请参见,因此如果我们接受您的查询:
SELECT id, name FROM table
WHERE name <> 'TOM' AND visible = 1
AND field_1 <> '' OR field_2 <> '' OR field_3 <> ''
添加澄清括号,我们将得到:
SELECT id, name FROM table
WHERE (name <> 'TOM' AND visible = 1 AND field_1 <> '')
OR field_2 <> ''
OR field_3 <> ''
这不是你想要的。可以通过显式添加括号来解决此问题:
SELECT id, name
FROM table
WHERE name <> 'TOM' AND
visible = 1 AND
(field_1 <> '' OR field_2 <> '' OR field_3 <> '')
and运算符的优先级高于or,有关更多详细信息,请参见,因此如果我们接受您的查询:
SELECT id, name FROM table
WHERE name <> 'TOM' AND visible = 1
AND field_1 <> '' OR field_2 <> '' OR field_3 <> ''
添加澄清括号,我们将得到:
SELECT id, name FROM table
WHERE (name <> 'TOM' AND visible = 1 AND field_1 <> '')
OR field_2 <> ''
OR field_3 <> ''
这不是你想要的。可以通过显式添加括号来解决此问题:
SELECT id, name
FROM table
WHERE name <> 'TOM' AND
visible = 1 AND
(field_1 <> '' OR field_2 <> '' OR field_3 <> '')
我怀疑,其中一个领域是真的!=,使条件对Tom记录有效。必须使用括号对一个或多个条件进行分组:
SELECT id, name FROM table
WHERE name <> 'TOM' AND visible = 1
AND (field_1 <> '' OR field_2 <> '' OR field_3 <> '')
我怀疑,其中一个领域是真的!=,使条件对Tom记录有效。必须使用括号对一个或多个条件进行分组:
SELECT id, name FROM table
WHERE name <> 'TOM' AND visible = 1
AND (field_1 <> '' OR field_2 <> '' OR field_3 <> '')
您的问题是优先级:将ORs括起来:
SELECT id, name
FROM table
WHERE name <> 'TOM'
AND visible = 1
AND (field_1 <> '' OR field_2 <> '' OR field_3 <> '')
您的问题是优先级:将ORs括起来:
SELECT id, name
FROM table
WHERE name <> 'TOM'
AND visible = 1
AND (field_1 <> '' OR field_2 <> '' OR field_3 <> '')
你应该加上
SELECT id, name
FROM table
WHERE name <> 'TOM'
AND visible = 1
AND (field_1 <> ''OR field_2 <> '' OR field_3 <> '')
你应该加上
SELECT id, name
FROM table
WHERE name <> 'TOM'
AND visible = 1
AND (field_1 <> ''OR field_2 <> '' OR field_3 <> '')
请在一个方框中附上空字段比较,如粗体所示 从表中选择id、名称 其中名称为“TOM”且可见=1
和字段_1或字段_2或字段_3请在一个方框中附上空字段比较,如粗体所示 从表中选择id、名称 其中名称为“TOM”且可见=1 和字段_1或字段_2或字段_3 你必须插入括号 空字段真的是空的吗?也许这个方法没有带来正确的结果 你必须插入括号 空字段真的是空的吗?也许这个方法没有带来正确的结果
定义为空。您的意思是null、空白还是字面上的文本为空?您可以为SQLFIDLE提供数据块字段,字段_1 2和3是varchar。请原谅我的定义是空的。您的意思是null、空白还是字面上的文本为空?您可以为SQLFIDLE提供数据块字段,字段_1 2和3是varchar。原谅