カラムの値ごとに最大値を求めたい[MySQL]
解決したいこと
テーブルからログインしているユーザ(IDをA001と仮定します)から最後に送信または受信したメッセージとそのユーザIDを取得したいです。
発生している問題・エラー
該当するソースコード
ログインしているユーザのIDはA001と仮定します。やりたいこととしては、①ログインしているユーザと送受信履歴のあるユーザからIDパターンを作成し、IDパターンごとのmsg_dateの最大値(MAX)を求めます。②HAVINGで① = msg_dateでそれぞれのユーザごとの最終メッセージを取得しようと考えています。
SELECT a.send_user, a.receive_user, a.msg_date,
CASE WHEN a.send_user != 'A001' THEN CONCAT('A001', a.send_user) WHEN a.receive_user != 'A001' THEN CONCAT('A001', a.receive_user) END AS DM_ID_PTN
FROM DM a
WHERE a.send_user = 'A001' OR a.receive_user = 'A001'
ORDER BY a.msg_date DESC
;
これを実行すると、下のようになります。これにDM_ID_PTNごとにmsg_dateの最大値を作りたいです。
自分で試したこと
GROUP BY DM_ID_PTNでやろうとしましたが、主キーID AUTO_INCREMENTのせいでどうしても昇順の状態で集約されてしまい、それぞれの最初のメッセージしか取得できなくなってしまいます。
0