删除重复数据
一次删除一批重复数据,需要多次执行
DELETE FROM TABLE_NAME
WHERE ID IN (
(
SELECT MIN ( ID)
FROM TABLE_NAME
GROUP BY COLUMNA, COLUMNB
HAVING COUNT ( 1 ) > 1
) TEMPA
)
REPLACE 插入新行之前删除旧行
https://dev.mysql.com/doc/refman/5.7/en/replace.html
REPLACE [ LOW_PRIORITY | DELAYED ]
[ INTO ] tbl_name
[ PARTITION ( partition_name [ , partition_name] . . . ) ]
[ ( col_name [ , col_name] . . . ) ]
{VALUES | VALUE } ( value_list) [ , ( value_list) ] . . .
INSERT INTO ON DUPLICATE KEY UPDATE
表需要设置唯一键,当数据重复时,更新该数据 https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
INSERT INTO t1 ( a, b, c) VALUES ( 1 , 2 , 3 )
ON DUPLICATE KEY UPDATE c= c+ 1 ;
UPDATE t1 SET c= c+ 1 WHERE a= 1 ;
INSERT INTO t1 ( a, b, c) VALUES ( 1 , 2 , 3 ) , ( 4 , 5 , 6 )
ON DUPLICATE KEY UPDATE c= VALUES ( a) + VALUES ( b) ;
INSERT INTO IGNORE
INSERT [ LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [ IGNORE ]
[ INTO ] tbl_name
[ PARTITION ( partition_name [ , partition_name] . . . ) ]
[ ( col_name [ , col_name] . . . ) ]
{VALUES | VALUE } ( value_list) [ , ( value_list) ] . . .
[ ON DUPLICATE KEY UPDATE assignment_list]