2016-12-03 67 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

相关问题