2012-11-13 57 views
20

請我想從表中選擇,在某一特定領域具有最小值數據的數據,我已經試過這樣:MYSQL如何選擇其中字段具有最小值

SELECT * FROM pieces where min(price) 

我對MySQL不好,請幫忙嗎?謝謝

+4

這個問題可以有多種解釋,你可以給例如記錄與結果的所有記錄? –

回答

41

這會給你所有記錄上的最低價格的結果。

SELECT * 
FROM pieces 
WHERE price = (SELECT MIN(price) FROM pieces) 
+0

不客氣:D –

+3

這可能會很慢。 – abenevaut

28

這是我會怎麼做(假設我理解這個問題)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1 

如果你想選擇多行,每個人可能有相同的價格(這是最低限度),那麼@ JohnWoo的答案應該足夠了。

基本上這裏我們只是按照ASCending順序(增加)中的價格對結果進行排序並取出結果的第一行。

2

這也適用於:

SELECT 
    pieces.* 
FROM 
    pieces inner join (select min(price) as minprice from pieces) mn 
    on pieces.price = mn.minprice 

(因爲這個版本不具備其中一個子查詢條件,它可以被使用,如果你需要更新表,但如果你只需要選擇我將reccommend使用吳宇森溶液)

+0

它看起來像它可以在視圖中重用 –

3

使用HAVING MIN(...)

喜歡的東西:

SELECT MIN(price) AS price, pricegroup 
FROM articles_prices 
WHERE articleID=10 
GROUP BY pricegroup 
HAVING MIN(price) > 0; 
1

事實上,取決於你想要得到什麼: - 就在最小值:

SELECT MIN(price) FROM pieces 
  • 一個表(倍數行)蒙山的最小值:是因爲吳宇森上面說的。

  • 但是,如果可以與相同最小值不同行,最好是從另一列命令他們,因爲畢竟以後你需要做的(由吳宇森的answere開始):

    SELECT * FROM件WHERE 價格=(SELECT MIN(價格)FROM件) ORDER BY股票ASC

-4

,使其更簡單

SELECT *, MIN(價格)FROM督促LIMIT 1

  • 把*所以它會顯示最小值
+4

它實際上不會。 *將顯示隨機值,不一定來自與該分鐘關聯的行。 –

+2

完全同意Laurentiu L.在這裏:大多數其他DBMS(然後是MySQL)不會允許您在沒有正確的GROUP BY子句的情況下運行這樣的查詢。 –

+0

這將選擇一個隨機行來最小化值,而不是它所要求的! –

相關問題