MySQLデータベースでは、グループ化後の各グループの最後のレコードをどのようにクエリーしますか?
937 ワード
問題の説明
たとえば、
では、
ソリューション
たとえば、
MySQL
データベースには、次のようにデータテーブルmessages
とデータレコードがあります.Id Name Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1
MySQL
パケットクエリ文が実行された場合、次のようになります.select * from messages group by name
name
でグループ化された最初のデータは、次のようにすべて返されます.1 A A_data_1
4 B B_data_1
6 C C_data_1
では、
name
でグループ化された後、各グループの最後のデータを返すMySQL
文をどのようにクエリーしますか.3 A A_data_3
5 B B_data_2
6 C C_data_1
ソリューション
MySQL
のIN(...)
句を使用して、次のようにします.SELECT id, name, other_columns
FROM messages
WHERE id IN (
SELECT MAX(id)
FROM messages
GROUP BY name
);