MySQLでテーブルからテーブルにINSERT SELECTでレコードを移動しようとしているのですが、その時に指定カラムが重複しているレコードはINSERTしない様にしたいです。
移動元テーブル(tableA)
id | name | color | quantity |
---|---|---|---|
1 | apple | red | 5 |
2 | apple | green | 3 |
3 | apple | red | 2 |
4 | apple | yellow | 1 |
5 | banana | yellow | 3 |
上記の様なテーブルがあった場合、nameとcolorが同じレコードは含めないで移動しようとしています。(下記の様な状態です)
移動後テーブル(tableB)
id | name | color | quantity |
---|---|---|---|
1 | apple | red | 5 |
2 | apple | green | 3 |
4 | apple | yellow | 1 |
5 | banana | yellow | 3 |
現状はDISTINCTやGROUP BYを使って重複を含めずSELECTはできるのですが、指定していないカラムの抽出ができない状態です。
MySQL
1# 重複はしないがその他のカラムがない 2 INSERT INTO tableB ( 3 name 4 , color 5 ) 6 SELECT DISTINCT 7 name 8 , color 9 FROM tableA; 10 11# カラムが足りずエラーになる 12 INSERT INTO tableB ( 13 id 14 , name 15 , color 16 , quantity 17 ) 18 SELECT DISTINCT 19 name 20 , color 21 FROM tableA;
どうしたら指定カラムの重複しないレコードのみを別テーブルにINSERTできるのでしょうか?
0 コメント