任务要求:给具有重复数据(所有列字段都重复)的表加上联合主键。
思路:
1、先创建一张临时表用来存有重复数据表。
2、将分组查询查出不重复的数据,再合并重复数据中去重的记录。
3、将不重复的数据存入临时表。
4、删除原表的数据、将临时表数据插入到原表、删除临时表。
5、给原表加上联合主键。
INSERT INTO temp_ds
SELECT * FROM b_ds WHERE created NOT in (
SELECT created FROM b_ds GROUP BY device_id,sensor_name,osp,vsp,freq,created HAVING COUNT(*) > 1
)
UNION
SELECT * FROM b_ds GROUP BY device_id,sensor_name,osp,vsp,freq,created HAVING COUNT(*) > 1;
TRUNCATE TABLE b_ds;
INSERT INTO b_ds
SELECT * FROM temp_ds;
DROP TABLE temp_ds;
ALTER TABLE b_ds ADD PRIMARY KEY(device_id,sensor_name,created);
说明:以上sql语句中表 temp_ds 是需要创建的临时表,b_ds 是具有重复记录的原表。