带有WHERE语句的SQL SELECT MIN值

时间:2018-05-24 18:29:31

标签: mysql sql

我试图获得SQL上特定报价的最低价格。我尝试了以下错误的结果:

  • SELECT * FROM price WHERE price =(SELECT MIN(price)as price FROM price WHERE id_quote = 36

  • SELECT id_provider,MIN(price)as price FROM price WHERE id_quote = 36

据我所知,如果我在该表中的价格相同,我会在第一个查询中获得多个结果,而不管报价是多少。但我不知道为什么第二个没有给我正确的结果。

我只需要调用id_provider及其特定报价(无组别)的价格。

有任何帮助吗?

Table price

3 个答案:

答案 0 :(得分:2)

我认为你只需要一个相关的子查询:

className

请注意,“quote”条件已移至外部查询。

答案 1 :(得分:1)

我喜欢使用RANK()来解决这类问题:

SELECT id_quote, id_provider, price
FROM
(
SELECT id_quote id_provider, price,
RANK() OVER(PARTITION BY id_quote ORDER BY price ASC) AS rnk
FROM price
) sub
WHERE rnk = 1

答案 2 :(得分:0)

You can do it this way if you want:

SELECT TOP 1 id_provider, price FROM price WHERE id_quote=36 ORDER BY price ASC