2014-01-10 45 views
1

我想知道如何選擇每個遇到結果表的第一個和第二個最低值的用戶?mysql選擇滿足第一個和第二個最低值的所有行?

臺試驗

NAME VALUE 
John 8 
Marie 8 
Luis 10 
Carlos 10 
Leo  13 
Max  14 

所以結果在這種情況下將

NAME VALUE 
John 8 
Marie 8 
Luis 10 
Carlos 10 

非常感謝!

順便說一句,我做了我的工作搜索谷歌和一切,沒有拿出任何東西,但查詢表,然後使用PHP來過濾這個對我來說,不利於性能。

@Aziz我得到的錯誤:#1235 - 該版本的MySQL還不支持 'LIMIT & IN/ALL/ANY/SOME子查詢'

感謝

謝謝大家的負載有用的答案!

萬一落入有趣的結果,像我一樣,我需要更多的過濾器,不得不添加到查詢,這裏如下:

SELECT * FROM results_temp WHERE 週報= 'semana6' AND total_pontos IN( SELECT * FROM( SELECT DISTINCT total_pontos FROM results_temp

WHERE semana='semana6' 

    ORDER BY `total_pontos` 
    LIMIT 0,2 

)AS噸 )

問候

+0

@ LeandroCintrao歡迎來到堆棧溢出...現在從下一次確保在將您的問題放在這裏之前做一些家庭工作我的意思是在谷歌上搜索...找到相關的答案..試試這個答案,然後如果你沒有找到任何東西,然後把你的問題在這裏與你所做的任何問題,我的意思是'Code','queriy'等... –

+0

順便說一句,我做了我的家庭搜索工作谷歌和一切,沒有拿出任何東西但查詢表格,然後使用PHP爲我過濾,對性能不利。 –

+0

然後你應該把這個查詢和代碼放在這裏...... –

回答

2

試試這個:

SELECT * FROM Test WHERE `value` IN (
    SELECT * FROM (
     SELECT DISTINCT `value` 
     FROM Test 
     ORDER BY `value` 
     LIMIT 0,2 
    ) AS t 
) 
+0

我收到錯誤:#1235 - 此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查詢' 謝謝 –

+0

@LeandroCintrao根據您的評論,我更新了上面的答案。請嘗試修改後的查詢。 –

1
SELECT * 
FROM tablename 
WHERE 
    value <= (SELECT MIN(Value) 
      FROM tablename 
      WHERE value>(SELECT MIN(VALUE) 
         FROM tablename)) 

請參閱小提琴here

2

試試這個:

SELECT t.* 
FROM Test t 
INNER JOIN (SELECT DISTINCT t.value FROM Test t ORDER BY t.value LIMIT 2 
      ) A ON t.value = A.value; 

入住這SQL FIDDLE DEMO

輸出

| NAME | VALUE | 
|--------|-------| 
| John |  8 | 
| Marie |  8 | 
| Luis | 10 | 
| Carlos | 10 | 
1

一個特定查詢不相關的版本幾乎總是快...

SELECT x.* 
    FROM tablename x 
    JOIN (SELECT DISTINCT value FROM tablename ORDER BY value LIMIT 2) y 
    ON y.value = x.value; 
相關問題