2016-11-09 43 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