使用带有in where子句的count函数执行SQL查询 书价

使用带有in where子句的count函数执行SQL查询 书价,sql,Sql,没有两本书的价格相同 SELECT bid FROM Book t1 WHERE (SELECT count(*) FROM Book t2 WHERE t1.price > t2.price) < 3 请用上述查询的一些示例和结果简要说明执行情况 对于book表中的每一本书,WHERE子句中的相关子查询统计书中价格严格更低的书的数量。如果该计数小于3,则选择该书本 基本上,查询的答案是:选择最多存在两本价格较低书籍的所有书籍 考虑到任何一对书的两种价格

没有两本书的价格相同

SELECT bid
FROM Book t1
WHERE (SELECT count(*)
       FROM Book t2
       WHERE t1.price > t2.price) < 3
请用上述查询的一些示例和结果简要说明执行情况

对于book表中的每一本书,WHERE子句中的相关子查询统计书中价格严格更低的书的数量。如果该计数小于3,则选择该书本

基本上,查询的答案是:选择最多存在两本价格较低书籍的所有书籍

考虑到任何一对书的两种价格都不相同,这本可以写得更简单如下:

SQL Server:

SELECT TOP 3 bid FROM book ORDER BY price ASC;
ANSI/ISO SQL:2008

SELECT bid FROM book ORDER BY price ASC
FETCH FIRST 3 ROWS ONLY

实际上,我只是想知道这个查询在内部将如何执行?对于实际的编程问题也是如此,而不是解释代码是如何工作的。选择一个SQL教程,有很多在线教程。为什么不试试EXPLAIN呢?另外,你还应该启用估计执行和实际执行plans@HoneyBadger提供任何合适的链接来理解sql查询的高难度。