繁体   English   中英

带WHERE语句的SQL SELECT MIN值

[英]SQL SELECT MIN value with WHERE statement

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

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

  • 选择id_provider,将MIN(price)作为价格,从价格WHERE id_quote = 36

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

我只需要从该特定报价(没有组)中调用id_provider及其价格。

有什么帮助吗?

价格表

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

SELECT p.*
FROM price p
WHERE p.id_quote = 36 AND
      p.price = (SELECT MIN(p2.price) FROM price p2 WHERE p2.id_quote = p.id_quote);

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

我喜欢将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
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM