mysql - SQL 语句是否会在 OR 语句中的第一个匹配项停止执行?

标签 mysql sql

我试图了解以下语句将如何在多条记录上执行。

SELECT * FROM test 
WHERE product='$product' 
AND (summary LIKE '%$keywords%' OR exp LIKE '%$keywords%')  
ORDER BY `$order_by` DESC;

我是 SQL 的新手,所以这是我想知道的:

1. 当您执行 SQL 查询时,我相信它会查看表中的每一行。当找到匹配项时,它将结果暂时存储在哪里,直到可以返回所有结果?

2. 在上面的示例中,假设我们正在查看表中的单行并且有一个匹配summary。查询是否会在已经找到匹配项时继续执行 OR exp LIKE '%$keywords%'

最佳答案

  1. 由数据库引擎决定如何存储临时结果。每个数据库引擎实现可能不同。客户端得到的是一个由行组成的结果集(如果查询产生结果的话)

  2. 不,如果 OR 中的第一个条件的计算结果为真,它不会检查第二个条件(无论如何这样做有什么意义,您已经知道最终结果)

关于mysql - SQL 语句是否会在 OR 语句中的第一个匹配项停止执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489801/

相关文章:

sql - 多表发票SUM比较

.net - 在插入语句中使用别名

mysql - 子查询

mysql - Cloudfoundry、Spring、MySQL 未知初始字符集索引 '192' 从服务器收到

MySQL:从一组中找出特定的记录

MySQL触发器未编译和逻辑

c# - 在 Linq 查询中动态选择属性

sql - 是否有与 Python 的 map 函数等效的 postgresql SQL

javascript - 如何将 mysql 查询的结果放入 html 文本框中

mysql - 优化MySQL结构和查询