2016-11-09 42 views
-1
  • Book(卖价)

无两个书具有相同的价格。执行具有计数功能的SQL查询与在WHERE子句

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

请详细解释一下上面查询的例子和结果的执行情况。

+0

其实我只是想知道这个查询如何在内部执行? –

+0

SO是针对实际的编程问题,而不是解释代码的工作原理。选择一个SQL教程,网上有很多。 – HoneyBadger

+1

你为什么不试验'EXPLAIN'? –

回答

0

对于表Book中的每本书,WHERE子句中的相关子查询计算了价格严格低于Book的书籍数。如果该数小于三,则选择该书。

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

这也可以写成简单如下(假设没有两个价格是任何对本书一样):

  • SQL服务器:

    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