- 締切済み
最後のデータを含むレコード1行 MYSQL
お世話になります。 最後の日にちを含むレコード全ての抽出方法がどうしてもわかりません。 id name date amount 1 AA 3/1 5 2 BB 3/1 5 3 CC 3/1 5 4 AA 3/2 7 5 BB 3/2 4 6 AA 3/3 1 これを、select * from テーブル group by name とすると、 id name date amount 1 AA 3/1 5 2 BB 3/1 5 3 CC 3/1 5 select id, name, max(date),amount from テーブル group by name とすると、 id name date amount 1 AA 3/3 5 2 BB 3/2 5 3 CC 3/1 5 望んでいる結果はこうです。最後のdateを含むレコード全てです。 id name date amount 3 CC 3/1 5 5 BB 3/2 4 6 AA 3/3 1 select * from テーブル as a where a.date=(select max(b.date) From テーブル as b where a.id=b.id); このようにしましたが、データの数が膨大なのですごく時間がかかってしまいます。 他、シンプルな方法はないでしょうか。 よろしくお願いします。 MYSQL バージョン5.0.45
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
適宜インデックスが貼ってあるとして select * from テーブル where (`name`,`date`) in (select `name`,max(`date`) from テーブル group by `name`) とするか select hoge.id,hoge.name,hoge.dateA,hoge.amount from テーブル AS hoge inner join ( select name,max(`date`) as `date` from hoge group by `name` ) as sub using(`name`,`date`) 的な処理で (チューニングを考えればもう少しありそうですが)
お礼
ありがとうございました。気にならないくらい早まりました。 大変助かりました。