求助:
显示一张表中内容重复的记录 有主键ID 如何做判断 谢谢

解决方案 »

  1.   

    参考一下
    http://www.365master.com/manage/database/sqlserver/20080504/34392.shtml
      

  2.   

    看你重复的依据是什么?如果是某一列那么就用group by 后,再用having count(*)
    select column1 from t group by column1 having count(*)>1
    多列的话,就自己添加了
      

  3.   

    内容 重复 是 整个  还是一个字段 
    一般 用WITH FUCK AS
    (
    SELECT * FROM TABLE A
    JOIN B
    ON A.FIELD=B.FIELD)
    DELETE FROM FUCK
      

  4.   

    或者 WITH FUCK AS
    (
    SELECT *FROM TABLE A WHERE FIELD < (SELECT MAX(FIELD) FROM TABLE B
    WHERE A.ID=B.ID
    )
    DELETE FROM FUCK
      

  5.   


    --剔除的话,整个记录重复
    可以用
    SELECT DISTINCT * FROM TABLE
    --找到有重复的
    DELETE * FROM TABLE A WHERE EXISTS(SELECT 1 FROM TABLE B WHERE A.ID=B.ID AND A.FIELD=B.FIELD)
      

  6.   


    我按除主键外全部字段重复调试完成:
    有表结构如下:
    id      name    course  score
    1 王三 英语 80
    2 王三 语文 78
    3 王三 数学 90
    4 李四 英语 65
    5 李四 语文 54
    6 李四 数学 96
    7 张五 英语 90
    8 张五 数学 80
    9 张五 语文 63
    10 王三 数学 90
    11 王三 数学 903,10,11三条记录除主键外完全重复
    第一步:分组查询出重复的信息记录
     select [name],course,score into #T from stu  group by [name],course,score having count(*)>1
      查询结果如下:
       #T 表中有数据为:
    /*-----------------------
     name    course score
      王三  数学   90第二步:两表连接查询语句:
    select stu.* from stu,#T where stu.[name]=#T.[name] and stu.course=#T.course and stu.score=#T.score
     查询结果如下:
    /*---------------------------------------
     id     name   course  score
      3 王三 数学 90
     10 王三 数学 90
     11 王三 数学 90
    如果记录太多的话,那就够麻烦的了..