写一段sql,对表crjjl中完全重复的数据进行去重
时间: 2024-09-25 17:16:41 浏览: 38
sqlserver清除完全重复的数据只保留重复数据中的第一条
4星 · 用户满意度95%
要删除表`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`;
```
请注意,在执行上述操作之前,请确保备份重要数据或在测试环境中先行验证此脚本的效果。此外还需检查是否有外键约束会影响到这些操作。如果存在外键关系,则可能需要暂时禁用它们或者一起处理相关联的对象。
阅读全文