mysqlにて下記のようなテーブルから
tableA
no | dat | to_user | from_user |
---|---|---|---|
10 | 2018-12-31 12:10:00 | Aさん | Bさん |
9 | 2018-12-30 12:10:00 | Bさん | Aさん |
8 | 2018-12-30 11:10:00 | Aさん | Bさん |
7 | 2018-12-21 12:10:00 | Cさん | Aさん |
6 | 2018-12-11 12:10:00 | Dさん | Aさん |
5 | 2018-12-01 12:10:00 | Cさん | Bさん |
4 | 2018-11-20 12:10:00 | Aさん | Bさん |
3 | 2018-11-10 12:10:00 | Aさん | Cさん |
2 | 2018-11-01 12:10:00 | Aさん | Dさん |
1 | 2018-10-21 12:10:00 | Cさん | Aさん |
抽出条件として
①Aさんがto_userまたはfrom_userに含まれる
②相手(Aさんでない方のカラム)の重複は除く
③それぞれdatの最新のもの
下記のようなデータを抽出したい
no | dat | to_user | from_user |
---|---|---|---|
10 | 2018-12-31 12:10:00 | Aさん | Bさん |
7 | 2018-12-21 12:10:00 | Cさん | Aさん |
6 | 2018-12-11 12:10:00 | Dさん | Aさん |
試したquery
mysql
1SELECT v1.* FROM 2(SELECT *,to_user as myno FROM tableA WHERE no IN( SELECT MAX(no) FROM tableA WHERE from_user='Aさん' GROUP BY to_user) 3 UNION ALL SELECT *,from_user as myno FROM tableA WHERE no IN( SELECT MAX(no) FROM tableA WHERE to_user='Aさん' GROUP BY from_user )) AS v1 4GROUP bY myno 5ORDER BY v1.dat DESC
としたのですが、①②を満たすデータは取れるのですが③datが最新のものの抽出ができません。
「mysql group 最大値」と検索した結果にヒントはあると思うのですが
UNION で連結していることで複雑になりわからなかったので、質問しました。
mac
chrome
php7.X
mysql5.7
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/10 15:43
2019/01/10 16:03
2019/01/10 16:07