2012-02-17 15 views
1

私はそこに1つのテーブルを持っているmysqlデータベースを持っています。 そのテーブルには、 "id"、 "Name"、 "Type"が含まれています。すべてのタイプからXの項目を選択してください

すべてのタイプから10行を取得したいと考えています。たとえば、次のようにこれより

(この例では、私は1つだけにしたい)

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

選択する必要がある:

0 - test1 - a 
2 - test3 - b 

は、私は1つのSQLクエリでこれをどのように行うことができますか?それとも不可能ですか?

+0

限り、私はあなたが常に2つのクエリを必要と覚えています。 – Mikhail

+1

私はこれが重複しているとは思わない - そこにupvoted解決策は、(SQL Serverのための)ウィンドウ関数を言及 - そしてMySQLはこれらをサポートしていない。 –

+0

記事:[SQLでグループごとに最初の/最小/最大の行を選択する方法](http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-グループ内のSQL /) –

答えて

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; 
関連する問題