gpt4 book ai didi

mysql - 如何在我的 SQL 语句中组合 AND 和 OR

转载 作者:行者123 更新时间:2023-11-29 04:18:40 24 4
gpt4 key购买 nike

我有这个 SQL 语句:

SELECT * FROM `table` WHERE type = 3 OR type = 5 OR type = 4 and table.deleted = 1;

我读过我可以使用括号来完成此操作,但我想知道这是否有效:

SELECT * FROM `table` WHERE (type = 3 OR type = 5 OR type = 4) and table.deleted = 1;

SELECT * FROM `table` WHERE (type = 3 OR type = 5) OR type = 4 and table.deleted = 1;

最佳答案

这两个都是有效的,但是 since AND has higher precedence than OR ,它们意味着不同的东西:

  • 您的第一个带括号的查询将选择类型为 3、4、5 的已删除行
  • 您的第二个带括号的查询将选择类型 3、5 的所有行,以及类型 4 的已删除行;这与不带括号的原始查询中的含义相同。

您可以通过使用运算符 IN 来完全避免混淆,如下所示:

SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;

或者如果你想要第二个意思

SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)

关于mysql - 如何在我的 SQL 语句中组合 AND 和 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464879/

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