2016-12-03 21 views
1

我一直在試圖找到銷售產品的第三高成本。 從表tblproducts.i我使用MySQL服務器5.6。子查詢可以找到銷售產品的第三高成本

我用下面的查詢:

select name 
from tblproducts 
where cost IN 
(select distinct top 3 cost 
from tblproducts 
order by cost desc); 

但是當我運行查詢它顯示了以下錯誤:

ERROR 1064(42000):你在你的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用附近的手冊「3個COS 牛逼 從tbbproducts 爲了通過成本DEC)」第4行

......... ............ 有人善意地幫我用語法來糾正這個錯誤。

謝謝。

+0

選擇從tblproducts其中成本(選擇不同的前3名來自tblproducts爲了按成本遞減的成本)的名稱; (更正:我已經使用IN ..請幫助我使用前3個語法) – ayav

回答

0
SELECT t1.name 
FROM tblproducts t1 
WHERE (3) = (SELECT COUNT(t2.cost) 
       FROM tblproducts t2 
       WHERE t2.cost >= t1.cost 
      ) 

演示在這裏:

SQLFiddle

更新:

上述查詢工作正常,只要是沒有可能性的產品在tblproducts重複成本。如果是開發商出於成本重複的機會,那麼我們可以如下修改查詢:

SELECT t1.name 
FROM tblproducts t1 
WHERE (3) = (SELECT COUNT(t2.cost) 
       FROM (SELECT DISTINCT cost FROM tblproducts) t2 
       WHERE t2.cost >= t1.cost 
      ) 
+0

ya dat working..but如果可能的話,你能用頂部(3)語法來幫助我嗎? – ayav

+0

'TOP(3)'是無效的MySQL語法,它只用於SQL Server和Access。 MySQL中'TOP'的類比是'LIMIT',但這可能無助於您嘗試執行的查詢。 –

+0

好的!這真的解決了我的問題..你好! – ayav

相關問題