在mysql查询中使用和/或时出现问题
我在思考如何编写所需的查询时遇到了一个问题。 我给你举个例子,说明我想做的事 从表中选择*,其中第1条=10,第2条=20,第3条=30 | | 40 我需要选择条目,其中第1条必须正好是10,第2条必须正好是20,但第3条可以是30或40,但必须正好是30或40 所以它会选择10,20,30或10,20,40的条目 从表中选择*,其中第1条=10,第2条=20,第3条=30或第3条=40不正确,但不是吗 数字和子句仅为示例。在mysql查询中使用和/或时出现问题,mysql,sql,Mysql,Sql,我在思考如何编写所需的查询时遇到了一个问题。 我给你举个例子,说明我想做的事 从表中选择*,其中第1条=10,第2条=20,第3条=30 | | 40 我需要选择条目,其中第1条必须正好是10,第2条必须正好是20,但第3条可以是30或40,但必须正好是30或40 所以它会选择10,20,30或10,20,40的条目 从表中选择*,其中第1条=10,第2条=20,第3条=30或第3条=40不正确,但不是吗 数字和子句仅为示例。 谢谢。您必须在最后一个条件的后面加上括号,并使用两次clause3=
谢谢。您必须在最后一个条件的后面加上括号,并使用两次
clause3=
:
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 || clause3=40)
或
注意
我建议使用运算符或
而不是| |
,因为在其他SQL方言(即Oracle、Postgres)中,|
是串联运算符。或者是标准SQL。所以第一句话最好写出来:
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 OR clause3=40)
解释
运算符和
的优先级高于或
。如果表达式中没有括号,以下两个语句的计算结果将相同
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND clause3=30 OR clause3=40
SELECT * FROM table WHERE (clause1=10 AND clause2=20 AND clause3=30) OR clause3=40
这不是你想要的。因此,要么在OR表达式周围加上括号,要么使用更简单的IN()。您必须在最后一个条件周围加上括号,并使用两次
clause3=
:
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 || clause3=40)
或
注意
我建议使用运算符或
而不是| |
,因为在其他SQL方言(即Oracle、Postgres)中,|
是串联运算符。或者是标准SQL。所以第一句话最好写出来:
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 OR clause3=40)
解释
运算符和
的优先级高于或
。如果表达式中没有括号,以下两个语句的计算结果将相同
SELECT * FROM table WHERE clause1=10 AND clause2=20 AND clause3=30 OR clause3=40
SELECT * FROM table WHERE (clause1=10 AND clause2=20 AND clause3=30) OR clause3=40
这不是你想要的。因此,要么在或表达式周围加括号,要么使用更简单的IN()。使用IN
SELECT *
FROM table
WHERE clause1=10 AND clause2=20 AND
clause3 in (30,40)
用于
SELECT *
FROM table
WHERE clause1=10 AND clause2=20 AND
clause3 in (30,40)