MariaDB ですべての列を選択したうえで重複していない行と、重複した行を1だけ取得したい

実現したいこと

例えば以下のようなテーブルがあったとき、

id number data
1 ABC AAA
2 DEF BBB
3 ABC CCC
4 GHI DDD

以下のようなデータを取り出したいです

id number data
2 DEF BBB
3 ABC CCC
4 GHI DDD

id1id3numberが重複しているので、idの大きいid3、およびnumberが重複していないid2,id4のみを返りとして得たいです。

発生している問題・分からないこと

返りのデータとしてはすべての列を得たいです。
分けてデータを得てから結合する方法ももしかしたらあるのかなと思いますが、可能であれば最初から一つのテーブルで受け取りたいです。(分けて得たとしてもid降順でソートできればよいのですが)

その方法がわからず質問させていただきました。
よろしければご教授いただければと思います。

試したこと・調べたこと

上記の詳細・結果

DINSTINCT節を使ってしまうと、すべての列を選択できず、重複している行のみ抽出する方法や重複していない行のみを抽出する方法は見つかったのですが、実現したいことをやるためには少し工夫がいりそうだというところではありましたが、初学者のため調べ方が外れていそうでうまく情報を得られないでいます。

補足

MariaDB および InnoDB です

コメントを投稿

0 コメント