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

如何删除SQLServer表中的重复行呢?

首页

如何删除SQLServer表中的重复行呢?

如何删除SQLServer表中的重复行呢?

提交回答

全部答案

    2017-07-25 22:45:22
  •   1。首先,运行上面的 GROUP BY 查询来确定有多少组重复的 PK 值及每组的重复数。
    2。选择重复的键值放入临时表中。例如:
    SELECT col1, col2, col3=count(*)
    INTO holdkey
    FROM t1
    GROUP BY col1, col2
    HAVING count(*) > 1
    3。
      选择重复的行放入临时表中,以清除进程中的重复值。例如: SELECT DISTINCT t1。* INTO holddups FROM t1, holdkey WHERE t1。col1 = holdkey。col1 AND t1。
      col2 = holdkey。col2 4。此时,holddups 表应有唯一的 PK;但是,如果 t1 有重复的 PK 而行唯一(如上面的 SSN 示例),情况就不是这样了。请验证 holddups 中的各个键是否唯一,是否没有键重复而行唯一的情况。
      如果是这样,您必须停在该处,确定对于给定重复的键值,您希望保留哪些行。例如,以下查询: SELECT col1, col2, count(*) FROM holddups GROUP BY col1, col2 应为各行返回计数 1。
      
      如果结果是 1,请继续执行下面的步骤 5。如果不是 1,则存在键重复而行唯一的情况,且需要您决定要保存哪些行。通常,这将需要舍弃行或为此行创建新的唯一的键值。为 holddups 表中每个此种重复 PK 执行这两个步骤之一。 5。从原始表中删除重复的行。

    b***

    2017-07-25 22:45:22

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

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

确定举报此问题

举报原因(必选):