Mysql在没有主键情况下,删除重复数据

方法一

建立一个临时表,将筛选好的数据存入临时表。删除原表数据后,将临时表数据插入原表。

  1. 建一个临时表,并将筛选的数据导入临时表
CREATE TABLE shop_users2 AS ( SELECT DISTINCT * FROM shop_users )
  1. 删除原表数据
DELETE FROM shop_users
  1. 将临时表数据插入原表
INSERT INTO shop_users 
SELECT * FROM shop_users2

方法二

通过添加字段自增id,删除重复数据。最后删除自增id。

  1. 给表增加自增id
ALTER TABLE shop_users ADD id INT ( 10 ) NOT NULL auto_increment,
ADD INDEX idx_id ( id )
  1. 删除重复数据
DELETE 
FROM
	shop_users 
WHERE
	id NOT IN (
SELECT
	id 
FROM
	( SELECT min( main.id ) id FROM shop_users main GROUP BY main.NAME, main.country, main.address ) children 
	)
  1. 删除自增id
ALTER TABLE shop_users DROP id

Guess you like

Origin blog.csdn.net/after_17/article/details/117290006