开发者社区> 问答> 正文

关于sql中or 和and的问题。

微软的SQL SERVER2000的联机从书上说:将两个条件结合起来。当在一个语句中使用多个逻辑运算符时,在 AND 运算符之后求 OR 运算符的值。但是,通过使用括号可以更改求值的顺序。

示例 下面的示例检索某些书名,这些书具有大于 $5,500 的预付款,并且这些书籍是商业书籍或心理学书籍。如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的所有商业书籍或者心理学书籍。

USE pubs GO SELECT SUBSTRING(title, 1, 30) AS Title, type FROM titles WHERE (type = 'business' OR type = 'psychology') AND advance > $5500 ORDER BY title GO

在他的说明中,我觉得有个地方是错的,但是我想微软怎么会出这样的错。于是向大家求证。我觉的他说的“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的所有商业书籍或者心理学书籍。”这句是错的。而是“如果没有括号,那么 WHERE 子句就会检索预付款超过 $5,500 的所有心理学书籍和所有的商业书籍。”

展开
收起
苍霞学子 2021-10-12 19:23:45 5759 0
1 条回答
写回答
取消 提交回答
  • 精于基础,广于工具,熟于业务。

    没有括号时,and 的优先级高于or的优先级,在SQL查询中or 会自动把条件分开查询。会产生这样的查询结果1、 advance > $5500 and type = 'business' 2、type = 'psychology'。所以书中没有错误,SQL中运算的优先级不同导致的,NOT> and > or

    2021-10-13 08:59:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
GeoMesa on Spark SQL 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
Spark SQL最佳实践 立即下载