gpt4 book ai didi

mysql - MySQL或/和优先级?

转载 作者:行者123 更新时间:2023-11-29 15:34:26 25 4
gpt4 key购买 nike

我想知道如何或/和如何工作?

例如,如果我想获取display = 1的所有行

我可以做WHERE tablename.display = 1

如果我想要显示= 1或2的所有行

我可以做WHERE tablename.display = 1 or tablename.display = 2

但是,如果我想获得display = 1或2且所有内容,标签或标题包含hello world的所有行该怎么办?

逻辑将如何发挥作用?

Select * from tablename 
where display = 1 or display = 2 and content like "%hello world%" or tags like "%hello world%" or title = "%hello world%"


是我的猜测。但是我可以通过几种方式阅读。

它的读数是否为:

 (display = 1 or display = 2) and (content like "%hello world%" or tags like "%hello world%" or title = "%hello world%")


或作为

((display = 1 or display = 2) and (content like "%hello world%")) or (tags like "%hello world%" or title = "%hello world%")


等等

最佳答案

MySQL文档带有good page,其中包含有关哪些运算符优先的信息。

在该页面上,


  12.3.1。运算符优先级
  
  运算符优先级从最高优先级到最低优先级显示在以下列表中。算子
  一起显示在同一行上的优先级相同。

INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
= (assignment), :=



所以你原来的查询

Select
*
from tablename
where
display = 1
or display = 2
and content like "%hello world%"
or tags like "%hello world%"
or title = "%hello world%"


将被解释为

Select
*
from tablename
where
(display = 1)
or (
(display = 2)
and (content like "%hello world%")
)
or (tags like "%hello world%")
or (title = "%hello world%")


如有疑问,请使用括号将您的意图弄清楚。虽然MySQL页面上的信息很有帮助,但如果再次访问该查询,可能不会立即显而易见。

您可能会考虑以下内容。请注意,我已将 title = "%hello world%"更改为 title like "%hello world%",因为它更适合您所描述的目标。

Select
*
from tablename
where
(
(display = 1)
or (display = 2)
) and (
(content like "%hello world%")
or (tags like "%hello world%")
or (title like "%hello world%")
)

关于mysql - MySQL或/和优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58386791/

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