前提・実現したいこと
以下のようなテーブルがあった場合に特定複数列のカラム(ここではA_No,B_No,Date)が重複するデータを全件取得しないようなSQLを書きたいです。
※カラムを一部抜粋しています
-- 仕様 --
・Kbnは1もしくは2のどちらか(3以上は存在しない)
・必ず1から作られる(2のみ存在することはあり得ない)
+--|---|------|------|--------+
|ID|Kbn|A_No |B_No |Date |
+--|---|------|------|--------+
|1 |1 |X00001|0 |20180220|
|2 |2 |X00001|0 |20180220|
|3 |1 |X00001|1 |20180220|
|4 |2 |X00001|1 |20180220|
|5 |1 |X00001|2 |20180220|
|6 |2 |X00001|2 |20180220|
|7 |1 |X00001|3 |20180220|
|8 |2 |X00001|3 |20180220|
|9 |1 |X00001|4 |20180220|
+--|---|------|------|--------+
理想の結果
+--|---|------|------|--------+
|ID|Kbn|A_No |B_No |Date |
+--|---|------|------|--------+
|9 |1 |X00001|4 |20180220|
+--|---|------|------|--------+
ユーザーの処理によって次に作成されるレコードは以下
ただし、作成されない可能性もあります。
+--|---|------|------|--------+
|ID|Kbn|A_No |B_No |Date |
+--|---|------|------|--------+
|10|2 |X00001|4 |YYYYMMDD|
+--|---|------|------|--------+
もし、このレコードが作成された場合にはSELECTしてもEmpty Setになってほしいです。
DISTINCTやGROUP BYで試してみたんですが上手くいかず、以下のような結果になってしまい困っています。
SELECT *FROM TableName WHERE Order_No = 'X00001' GROUP BY A_No ,B_No ,Date;
+--|---|------|------|--------+
|ID|Kbn|A_No |B_No |Date |
+--|---|------|------|--------+
|1 |1 |X00001|0 |20180220|
|3 |1 |X00001|1 |20180220|
|5 |1 |X00001|2 |20180220|
|7 |1 |X00001|3 |20180220|
|9 |1 |X00001|4 |20180220|
+--|---|------|------|--------+
わかりにくい質問で申し訳ないですがご教授ください。
補足情報(FW/ツールのバージョンなど)
MySQL 5.5.34
回答3件
あなたの回答
tips
プレビュー