MySQLでテーブルからテーブルにデータをINSERTするとき、重複を避けたい

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 コメント