2009-07-02 7 views
0

テーブルは次のようになります。MySQLでカラムをグループ化して選択する

ID |タイプ
01 | a
02 | c
03 | b
04 | a
05 | b
06 |

は私が出力タイプでグループ化された最後の追加されたエントリのIDにしたいです。 IDは自動増分フィールドなので、最後に追加されたエントリは明らかに最高の番号です。 6,5,2

SELECT * FROM `table` GROUP BY `Type` ORDER BY `ID` DESC, `Type` ASC 

タイプによるこのグループの行は、私は結果を得るために最初のTHENグループをソートしたいのに対し、私はIDの1,2,3を入手IDによってソート

+0

使用しているMySQLのバージョンは?サブ選択がオプションになるかどうかを知ることは重要です –

+0

MySQLバージョン:5.0.81-community –

答えて

1

これは、あなたが

種類のグループごとにIDの最大値を選択すると読む
 
SELECT MAX(`ID`), `Type` 
FROM  `table` 
GROUP BY `Type` 
ORDER BY `Type` ASC 

...探しているものかもしれません。

+0

完全に動作します。他は解決策ですが、これは私が後にした最も単純なものです。 –

+0

も気付いていますが、MAX( 'Type')を持つ必要があります。それ以外の場合は、特に他のいくつかの列がある場合は、正しいものを選択しません –

1

MySQLのバージョンは、副選択(および5.xはありません)を許可する場合、これは動作するはずです:

SELECT * 
    FROM (SELECT * FROM `table` ORDER BY `id` DESC) AS tmp 
    GROUP BY `type` 
    ORDER BY `type` ASC; 
0

ここ/ Oサブセレクトワット古典的な方法です:

は、
SELECT t1.* FROM table t1 
LEFT JOIN table t2 
    ON (t2.type = t1.type AND t2.id > t1.id) 
WHERE t2.id IS NULL 

「同じタイプの他の行が大きなIDを持たないようにテーブル内の行を選んでください」と読み替えてください。

関連する問題