子查询找到所售产品的第三高成本

时间:2016-12-03 06:20:55

标签: mysql

我一直试图找到所售产品的第三高成本。 从表tblproducts.i我正在使用mysql server 5.6。

我使用了以下查询:

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

但是当我运行查询时,它会显示以下错误:

错误1064(42000):您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便在'3 cos附近使用正确的语法 Ť 来自tbbproducts 按成本排序')第4行

..................... 有人帮我修改了这个错误的语法。

三江源。

1 个答案:

答案 0 :(得分: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
            )