SQL - 最大値の取得
ここに【data】というテーブルがありまする。
id | version |
---|---|
1 | 2.01 |
2 | 1.01 |
3 | 1.02 |
ここから、versionが最大のレコードのidを取得する(この場合はversion2.01が最大なので、そのid=1返す)3通りのSQL文の書き方をメモメモ。
- サブクエリでversionの最大値を取得して比較
SELECT id FROM data WHERE version = ( SELECT max(version) FROM data GROUP BY version );
- versionの降順で並べ替えて一番上のレコードを取得
SELECT id FROM data ORDER BY version DESC LIMIT 1;
- 自己参照でversionを比較
SELECT id FROM data d1 WHERE NOT EXISTS ( SELECT version FROM data d2 WHERE d2.version > d1.version );
データベースの環境依存でどれが良いとは一概には言えないらしい?
でも二番目のは余計なメモリを食うのでオススメできないとのこと。
三番目の自己参照が今回初耳でした★
めもめも。