SQL查询表达式的优先顺序

标签 sql sql-server database

我正在尝试弄清楚 SQL 查询是如何运行的,但遇到了一些障碍。

如果使用类似于下面的 where 子句:

A 或 B 和 C

这可能意味着以下任何一种

(A 或 B)和 C

A 或(B 和 C)

在大多数情况下,结果是相同的,但如果要查询的集合仅包含 {A},第一个变体将返回一个空结果集,第二个变体将返回 {A}。 SQL 实际上确实返回了 1 结果。

有没有人知道(或有链接)任何有助于我理解如何构建查询的见解?

番茄酱

最佳答案

根据MSDN顺序如下:

  1. ~ (Bitwise NOT)

  2. (*) (Multiply), / (Division), % (Modulo)

  3. (+) (Positive), - (Negative), + (Add), (+ Concatenate), - (Subtract), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitwise OR)

  4. =, >, <, >=, <=, <>, !=, !>, !< (Comparison operators)

  5. NOT

  6. AND

  7. ALL, ANY, BETWEEN, IN, LIKE, OR, SOME

  8. = (Assignment)

关于SQL查询表达式的优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244229/

相关文章:

sql - 如何在忽略两列在 Postgres 中的顺序的同时限制它们的唯一性

sql-server - 使用 NHibernate 映射 XML 数据类型

sql - 触发引发错误、阻止删除和审核尝试

c# - 创建和编辑数据库结构的方法 : code or scripts?

php - codeigniter 中 undefined variable 查询

sql - 检索具有某些条件的所有 SP 的列表

php - Mysql 连接两个表来检查用户是否做出了选择

SQL动态创建存储过程?

sql - 获取本月第一个日期的值

mysql - 在 mysql workbench 中隐藏数据类型