mysql 少用or_MySQL语句中使用OR的确如何与/不用括号有什么不同?

我有这个问题:

SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'

AND `status` = 'active' OR `status` = 'past due'

哪个没有返回正确的结果.但是,在OR条件周围添加括号使其工作如下:

SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'

AND (`status` = 'active' OR `status` = 'past due')

我的问题是它为什么不同?据我所知,在没有括号的情况下,OR语句会有所不同;但我不明白它是如何不同的.

我没有找到任何对此有帮助的文档.如果那里有任何链接,我真的很感激.

解决方法:

这是因为OR比AND低operator precedence.每当DB看到类似的表达式时

A AND B OR C

首先评估AND,即它等同于

(A AND B) OR C

所以,如果你明确想要

A AND (B OR C)

相反,你必须放入括号.

这不是特定于SQL的.这些运算符的优先顺序在我所知的所有编程语言中都是相同的(即至少是C,C,C#,Java和Unix shell脚本).

标签:sql,mysql

来源: https://codeday.me/bug/20190926/1819023.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值