在where子句中使用count函数执行SQL查询

时间:2016-11-09 15:06:41

标签: sql

  • Book(出价,价格)

没有两本书的价格相同。

SELECT bid
FROM Book t1
WHERE (SELECT count(*)
       FROM Book t2
       WHERE t1.price > t2.price) < 3

请通过上述查询的一些示例和结果简要说明执行情况。

1 个答案:

答案 0 :(得分:0)

对于表Book中的每本书,WHERE子句中的相关子查询计算Book中价格严格较低的图书数量。如果该计数小于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