簡體   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