我正在尝试将行从复制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