爱问知识人 爱问教育 医院库

sql中如何删除一个表中重复的纪录

首页

sql中如何删除一个表中重复的纪录

假设我有一个表table
key   id     name
1   | 1001 | 张飞
2   | 1001 | 张飞
3   | 1002 | 关羽
4   | 1003 | 刘备
5   | 1004 | 马超
6   | 1004 | 马超
7   | 1005 | 曹操

很明显,张飞的记录重复了,我要删除任意一条重复的纪录该如何操作?如果我想指定删除按照key排序的第二条重复纪录我该如何写sql?我的意思是我要删除key为2和6的这两条记录,因为他们是第二次出现的。当然了,最首要实现的是能删除一条重复的,不管怎么删,只要能让我保证数据的唯一性就行。如果id相同就可以判定两条记录重复了,name是否相同并不重要。


提交回答
好评回答
  • 2006-07-31 00:45:28
    用distinc命令可以去掉重复命令比如:
    select distinct id from table
    或者使用uniqe替代distinct都是一样得
    但这只能在显示结果中显示并没有实际改变表中得值
    不过你可以写一个update命令使表中数据改变
    大概是大概是delete from table where id=distinct(id)
    不知对不对,但是排除重复记录得语句肯定是distinct我用的是oracle数据库测试成功
    

    茜***

    2006-07-31 00:45:28

其他答案

    2006-07-28 10:24:34
  • 表设计的确存在问题!
    我想解决办法可以有两种:
    1、如果有前台编程,可以在代码中进行判断处理删除提交即可。
    2、可以使用游标,在定义游标时,要对ID列进行ORDER BY排序,然后循环判断,如果当前记录和上一条记录ID重复,就删除当前行。
    至于用一句SQL语句来实现,我想了半天,没想出来!
    下面这句话,可以找到重复的ID记录行。
    select key,id from test group by id having count(id) > 1; 但这是一个结果集,保留和删除的记录行都在一起,仍然不能够做为删除语句的唯一条件。
    

    心***

    2006-07-28 10:24:34

  • 2006-07-27 15:33:03
  •   数据库设计本身就有问题! 建用ID作为主键! 像1 2这样的记录根本就没有意义嘛!

    1***

    2006-07-27 15:33:03

类似问题

换一换
  • 数据库 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 175-194
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):