我正面临一个错误
ERROR 1062 (23000): Duplicate entry '42322-xyz@yahoo.co.in' for key 'PRIMARY'
将数据从一个表复制到另一个表时。 是否有可能绕过表A中的表A中的行,我正在尝试使用
INSERT INTO tableB SELECT * FROM tableA as A join v2_opens as B on A.id!=B.id and A.emailid != B.emailid WHERE A.date='2015-01-27';
但是对于上述查询我收到错误:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
请求您建议并帮助我如何克服这些问题。 我关心的是将数据从TableA复制到TableB,如果有任何重复条目(使用主键),则必须绕过它。
答案 0 :(得分:0)
为了绕过行,我更喜欢on duplicate key update
。这可以完全避免错误。
进行插入时,通常应包括要插入的列:
INSERT INTO tableB(col1, . . .)
SELECT col1, . . .
FROM tableA as A join
v2_opens as B on A.id <> B.id and A.emailid <> B.emailid
WHERE A.date='2015-01-27'
ON DUPLICATE KEY UPDATE col1 = values(col1);
但是,如果这个查询真的想要你想做,我会感到惊讶。这可能就足够了:
INSERT INTO tableB(col1, . . .)
SELECT col1, . . .
FROM tableA a
WHERE A.date = '2015-01-27'
ON DUPLICATE KEY UPDATE col1 = values(col1);
或许这个:
INSERT INTO tableB(col1, . . .)
SELECT col1, . . .
FROM tableA as A LEFT JOIN
v2_opens as B
ON A.id = B.id and A.emailid = B.emailid
WHERE A.date = '2015-01-27' AND B.id IS NULL;