tableAから行を空白にコピーしようとしていますtableB。
tableAには列mytextがあり、行にはこの列からの重複があります。
質問
重複行がない A から B にコピーするにはどうすればよいmytextですか? つまり、2 つ以上の行に同一の値がある場合、mytextID 番号が最も小さい行を保持し、にコピーし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