gpt4 book ai didi

mysql - 在 mysql 查询中使用和/或有问题

转载 作者:行者123 更新时间:2023-11-29 04:20:47 27 4
gpt4 key购买 nike

我在思考如何编写我需要的查询时遇到问题。我会给你一个我正在尝试做的例子..

SELECT * FROM table WHERE clause1=10 AND clause2=20 AND clause3=30||40

我需要选择条目,其中 clause1 必须正好是 10,clause2 必须正好是 20,但 clause3 可以是 30 或 40,但必须正好是 30 或正好是 40。

所以它会选择条目,如果它是 10,20,30 或 10,20,40

SELECT * FROM table WHERE clause1=10 AND clause2=20 AND clause3=30 OR clause3=40 是不正确的,不是吗。

数字和条款仅供引用。谢谢。

最佳答案

你必须在你的最后一个条件周围使用括号并使用两次clause3=:

 SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 || clause3=40)

 SELECT * FROM table WHERE clause1=10 AND clause2=20 AND clause3 IN (30, 40)

注意

我建议使用运算符 OR 而不是 ||,因为在其他 SQL 方言(即 Oracle、Postgres)中 ||是串联运算符。 OR 是标准 SQL。所以第一条语句最好写成:

 SELECT * FROM table WHERE clause1=10 AND clause2=20 AND (clause3=30 OR clause3=40)

解释

运算符AND 的优先级高于OR。如果没有括号,表达式将对以下两个语句进行相同的计算

     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()。

关于mysql - 在 mysql 查询中使用和/或有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24893369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com