用sql写一个删除重复数据的脚本
时间: 2023-11-12 17:08:38 浏览: 131
假设我们有一个名为table_name的表,其中有重复的数据,我们可以使用以下SQL语句来删除重复的数据:
```
DELETE FROM table_name
WHERE id NOT IN (
SELECT MIN(id)
FROM table_name
GROUP BY column1, column2, column3 -- 根据需要指定去重的列
);
```
其中,id是表的主键,column1、column2、column3是需要去重的列,通过GROUP BY指定。这条SQL语句会保留每组重复数据中的第一条数据,其余数据将被删除。
相关问题
写一段sql,对表crjjl中完全重复的数据进行去重
要删除表`crjjl`中所有字段值都相同的重复记录,可以采用如下方法:创建一个临时表来插入具有唯一行数据的信息,然后用这个临时表替换原表。以下是实现该操作的一系列SQL语句:
```sql
-- 创建一个新的临时表,保留唯一的记录
CREATE TABLE `temp_crjjl` (
SELECT *
FROM (
-- 使用子查询选择每列,并使用GROUP BY去除重复项
SELECT `姓名`, `性别中文`, `出生日期`, `国家地区名称`, `证件类别名称`, `证件号码`,
`签证类型名称`, `签证号码`, `停留期`, `出入标识`, `出入时间(详细)`, `出入口岸名称`,
`交通方式`, `交通工具`, `前往地/出发地名称`, `出入境事由名称`, `内部团号`, `旅行团号`,
`疑难字说明`, `第二证件号码`, `第二证件类型名称`
FROM `crjjl`
) sub
GROUP BY `姓名`, `性别中文`, `出生日期`, `国家地区名称`, `证件类别名称`, `证件号码`,
`签证类型名称`, `签证号码`, `停留期`, `出入标识`, `出入时间(详细)`, `出入口岸名称`,
`交通方式`, `交通工具`, `前往地/出发地名称`, `出入境事由名称`, `内部团号`, `旅行团号`,
`疑难字说明`, `第二证件号码`, `第二证件类型名称`
);
-- 删除原有的crjjl表
DROP TABLE `crjjl`;
-- 将临时表重命名为原始表的名字
RENAME TABLE `temp_crjjl` TO `crjjl`;
```
请注意,在执行上述操作之前,请确保备份重要数据或在测试环境中先行验证此脚本的效果。此外还需检查是否有外键约束会影响到这些操作。如果存在外键关系,则可能需要暂时禁用它们或者一起处理相关联的对象。
阅读全文