tableA
から行を空白にコピーしようとしていますtableB
。
tableA
には列mytext
があり、行にはこの列からの重複があります。
質問
重複行がない A から B にコピーするにはどうすればよいmytext
ですか? つまり、2 つ以上の行に同一の値がある場合、mytext
ID 番号が最も小さい行を保持し、にコピーしtableB
ます。
最初は重複を削除しようとしましたが、エラーが発生し続けましたError Code: 1205. Lock wait timeout exceeded from this sql command:
DELETE n1
FROM tableA n1, tableA n2
WHERE n1.id > n2.id
AND n1.mytext = n2.mytext
私はオンですamazons
RDS
+---+-----+-----+------+-------+
|id |fname|lname|mytext|morevar|
|---|-----|-----|------|-------|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+------------------------------+
CREATE TABLE `tableB` (
`id` int(11) NOT NULL,
`fname` varchar(45) DEFAULT NULL,
`lname` varchar(45) DEFAULT NULL,
`mytext` mediumtext,
`morevar` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
これは機能しませんでした。重複をキャッチせず、単純にすべての値を tableA から tableB にコピーしました
INSERT INTO tableB (`id`,`fname`,`lname`,`mytext`,`morevar`)
SELECT DISTINCT tableA.id,tableA.fname,tableA.lname,tableA.mytext,tableA.morevar
FROM tableA