以下の様なテーブルに対してユーザ毎にlogintimeが最新のレコードを取得するSQLを作成しています。
最新レコードを対象とした記述に苦戦しているため、ご教示ください。
現在のSQLの原因として以下の点があると思います。
・selectのmaxはlogintimeの最新レコードではなく
グループ化されたuser_idの各カラム毎に最大値を取得している
・gorup byの結果に対してorder byを行っているので
最新レコードでの一意のグループ化が行われていない
↓ 現在作成中のSQL
select
user_id,
max(group_id) group_id,
max(logintime) logintime
from histories
group by user_id
order by logintime desc
↓ 対象のTBL
histories.tbl
~~~~~~~~~~~~~~~~
user_id group_id logintime
~~~~~~~~~~~~~~~~
1 2 12:00
1 1 15:00
2 1 16:00
3 1 17:00
↓ 期待する結果
~~~~~~~~~~~~~~~~
user_id group_id logintime
~~~~~~~~~~~~~~~~
1 1 15:00
2 1 16:00
3 1 17:00
↓現在の結果
~~~~~~~~~~~~~~~~
user_id group_id logintime
~~~~~~~~~~~~~~~~
1 2 15:00
2 1 16:00
3 1 17:00
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/02 10:08