TableAという下記のテーブルがあります。(実データは20万件ほど)
No | EmployeeName | DepartmentNo |
---|---|---|
1 | 鈴木1世 | 1 |
2 | 鈴木2世 | 2 |
3 | 鈴木3世 | 3 |
4 | 鈴木4世 | 1 |
5 | 鈴木5世 | 2 |
6 | 鈴木6世 | 3 |
...etc |
各DepartmentNoを1件ずつ残し重複するデータをDELETEすのが最終的な着地点です。
下記のSQLにてDepartmentNoの一覧を取得はできています。(300件ほど)
SQL
1 select DepartmentNo 2 from TableA 3 group by DepartmentNo 4 having count(*) > 1
これを参考に取得できたデータ以外を削除する下記のSQLを作成しました。
SQL
1 delete from TableA 2 where (Department)not in ( 3 select DepartmentNo 4 from TableA 5 group by DepartmentNo 6 having count(*) > 1 7 )
しかし、上記SQLを実行すると残したいデータの件数が
一覧を取得した時より少なく(30件ほど)、目標件数のDELETEができません。
なぜうまくいかないのかがわからずです。
原因がわかる方がいらっしゃいましたら教えてください。
回答1件
あなたの回答
tips
プレビュー