2012-02-17 68 views
1

我有一個mysql數據庫,在那裏我有1個表。 該表格包含「ID」,「名稱」,「類型」。從各種類型中選擇X個項目

我想從每種類型獲得10行。例如:

(在這個例子中,我只想要1)

0 - test1 - a 
1 - test2 - a 
2 - test3 - b 

比這需要選擇:

0 - test1 - a 
2 - test3 - b 

我怎樣才能做到這一點在1個SQL查詢?或者那是不可能的?

+0

至於我記得你總是需要兩個查詢。 – Mikhail 2012-02-17 14:42:14

+1

我不認爲這是重複的 - upvoted的解決方案中提到了窗口函數(它是針對SQL Server的) - 而MySQL不支持這些。 – 2012-02-17 14:50:41

+0

文章:[如何在SQL中選擇每個組的第一/最小/最大行](http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-每個組在SQL中) – 2012-02-17 15:01:31

回答

4

嘗試此查詢 -

SELECT id, name, type 
    FROM (
    SELECT t1.*, COUNT(*) cnt FROM table t1 
    LEFT JOIN table t2 
     ON t2.type = t1.type AND t2.id <= t1.id 
    GROUP BY 
     t1.type, t1.id 
) t 
WHERE cnt <= 10;