Mysql 或/和优先级?

2024-04-08

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

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

我只能做WHERE tablename.display = 1

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

我只能做WHERE tablename.display = 1 or tablename.display = 2

但是如果我想获取 display = 1 或 2 的所有行以及 whereany of内容、标签或标题包含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%")

or as

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

etc.


MySQL 文档有一个好页面 http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html以及有关哪些运算符优先的信息。

从该页面开始,

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%" to 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%")
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 或/和优先级? 的相关文章

随机推荐

  • 聚合、组合、关联、直接关联

    我正在复习面向对象编程方面的知识 在类之间的关系主题下 我遇到了一些对我来说有点模糊的关系 我知道依赖项 uses a 和继承 is a 但我对聚合 组合 关联和直接关联有点不熟悉 另外 其中哪一个是 has a 关系 有些可以与关联互换使
  • MongoDB - 使用全文搜索搜索单词和短语时的逻辑 OR

    我之前问过一个相关问题 根据发帖者的建议 创建了这个新问题作为后续问题 MongoDB 全文搜索 匹配单词和精确短语 https stackoverflow com questions 28368883 mongodb full text
  • 页面加载时,angularjs ng-cloak 不起作用

    我是 AngularJS 的新手 并试图解决在评估 ng if 条件之前显示某些 HTML 代码的问题 我正在使用 ng cloak 正如许多其他堆栈溢出 URL 中提到的那样 但它仍然对我不起作用 我正在尝试加载默认图像 如果 URL 上
  • 每个模块必须有唯一的路径

    我已经使用 GIT 从版本控制导入了一个项目 导入 同步等等之后 它给了我这个错误 错误 模块 LinkedCraftMobile linkedcraft android 指向文件系统中的同一目录 每个模块都必须有唯一的路径 我想要一个可以
  • 如何将数据表存储在缓存中以便重复使用?

    在我的应用程序中 我使用了通用处理程序来处理请求 我想要一种机制 如果第一次请求到达处理程序 它会向服务器发出请求 然后缓存整个数据表 因此对于即将到来的请求 如果下一个请求的产品代码存在于缓存的数据表中 则它不应该去再次获取数据的服务器
  • Net Core自定义用户属性

    我在 NET Core 项目中使用默认授权 我想检查用户是否是管理员 因此在 ApplicationUser cs 模型中我添加了以下内容 public class ApplicationUser IdentityUser public b
  • 实体框架中的 FirstOrDefault 调用已缓存,但数据库已更改

    我有一个奇怪的问题 我以前没有遇到过 我使用实体框架来检索我的记录 我有以下电话 var dbOrganisation repository DbOrganisation FirstOrDefault c gt c Id id 我预计不会缓
  • NfcAdapter.getDefaultAdapter(this) 返回 null 但 NFC 可以工作

    我的应用程序在后台和前台使用 NFC 读取 对于用户信息 我在活动中使用 CountDownTimer 120 1000 5 1000 和方法 onTick long l 每 5 秒检查一次 NFC 状态 有时 在 Android 4 2
  • Android 短按打开 ContextMenu + 传递项目单击的详细信息

    lv setOnItemClickListener new OnItemClickListener Override public void onItemClick AdapterView
  • 解决Java中的传递依赖冲突

    我正在尝试建立一个空投向导 http www dropwizard io 泽西岛 与 HBase 通信的 REST 端点 尽管这是我仅有的两个顶级依赖项 但这两个依赖项都加载了许多冲突的传递依赖项 这种冲突的一个简单例子是 Google 的
  • Receive-Job 返回意外的变量类型

    我正在尝试执行Invoke Sqlcmd命令 来自SQLServer模块 https learn microsoft com en us sql powershell sql server powershell view sql serve
  • 输入和按钮与 Bootstrap 在同一行

    我想将输入字段和按钮放在同一行中 我想为按钮设置固定大小 并且希望表单填充可用空间 我尝试创建自己的解决方案 但不幸的是该按钮低于输入字段 我怎样才能解决这个问题 CSS input bar display table width 100
  • 对象方法内的自引用

    刚刚开始在 Matlab OO 编程中进行速成课程 我想为一个对象编写一个 set 方法 该方法将设置值 然后通过在另一个对象的相关字段中设置自身来进行交互 classdef Person properties age sex priori
  • 拖放,防止尴尬的突出显示?

    我正在使用查询构建拖放方法 onmousedown 导致 onmousemove 拖动 然后 onmouseup 解除绑定 onmousemove 问题是 浏览器默认开始突出显示 onmousemove 它会在整个页面上飞来飞去并取消该事件
  • 具有数据属性的 HTML Option 元素。是否可能,如果可以,如何使用 jQuery 检索值?

    我只是想知道是否可以在 html 中包含带有数据属性的选项元素 如果可以的话如何检索该值 更具体 假设我有以下代码
  • 如何在 YAML 中使用 IF ELSE 和变量?

    我正在使用 Ansible Tower 的 YAML 文件 其中包含以下信息 name Package Deployment block name Update package package yum update cache True u
  • 当 DEBUG 为 False 时,Django 对 CSS 和图像等所有静态文件给出错误 500

    我尝试过用户已经发布的不同解决方案 但它们对我不起作用 设置 py项目数量 BASE DIR os path dirname os path dirname os path abspath file DEBUG False ALLOWED
  • 允许用户使用下拉菜单更改 CSS 设计元素?

    因此 由于我在为网站确定绝对主题时遇到问题 我想让用户从下拉菜单中选择一个主题 并且当单击某个选项时 它将更改背景图像 背景颜色和背景定位 例如 如果用户选择 Mario Bros 3 主题 他们会得到 background image u
  • Java 中的捕获转换是什么?有人能给我举个例子吗?

    我注意到 JLS 谈到5 1 10 捕捉转换 http java sun com docs books jls third edition html conversions html 5 1 10 但我不明白它们是什么 谁能给我解释一下 举
  • Mysql 或/和优先级?

    我想知道或 和如何工作 例如 如果我想获取 display 1 的所有行 我只能做WHERE tablename display 1 如果我想要显示 1 或 2 的所有行 我只能做WHERE tablename display 1 or t