易截截图软件、单文件、免安装、纯绿色、仅160KB

如何删除 SQL Server 表中的重复行

    Microsoft SQL Server 表不应该包含重复行和非唯一主键。为简洁起见,在本文中我们有时称主键为“键”或“PK”,但这始终表示“主键”。重复的 PK 违反了实体完整性,在关系系统中是不允许的。SQL Server 有各种强制执行实体完整性的机制,包括索引、唯一约束、主键约束和触发器。
    尽管如此,在某些情况下还可能会出现重复的主键;如果出现此类情况,就必须清除重复主键。出现重复主键的情形之一是,在 SQL Server 外部的非关系数据中存在重复的 PK,在导入这些数据时没有强制执行 PK 唯一性。出现重复主键的另一种情形来自数据库设计错误,如没有对每张表强制执行实体完整性。
  通常在尝试创建唯一索引时会发现重复的 PK,因为如果找到重复的键,唯一索引的创建即会中止,并且将显示以下消息:
  Msg 1505, Level 16, State 1 Create unique index aborted on duplicate key.
  如果使用的是 SQL Server 2000 或 SQL Server 2005,则会收到以下错误消息:
  Msg 1505, Level 16, State 1 CREATE UNIQUE INDEX terminated because a duplicate key was found for object name '%.*ls' and index name '%.*ls'.The duplicate key value is %ls.
  本文讨论如何查找和删除表中重复的主键。但是,您应该仔细检查出现重复键的进程以避免重复出现。
  更多信息
  在该示例中,我们将使用下表,它具有重复的 PK 值。在该表中,主键是两列(col1、col2)。我们无法创建唯一索引或主键约束,因为这两行具有重复的 PK。该过程演示如何识别和删除重复的主键。
  create table t1(col1 int, col2 int, col3 char(50))
  insert into t1 values (1, 1, 'data value one')
  insert into t1 values (1, 1, 'data value one')
  insert into t1 values (1, 2, 'data value two')
  第一步是识别哪些行具有重复的主键值:
  SELECT col1, col2, count(*)
  from t1
  GROUP BY col1, col2
  HAVING count(*) > 1
  这将为表中的每组重复的 PK 值返回一行。此结果中的最后一列是特定 PK 值的重复数。
  col1c


相关文档:

Oracle 学习:PL/SQL循序渐进全面学习教程

  课程 二 PL/SQL 查询行函数
  
  本课重点:
  1、掌握各种在PL/SQL中可用的ROW函数
  
  2、使用这些函数的基本概念
  
  3、SELECT语句中使用函数
  
  4、使用转换函数
  
  注意:以下实例中标点均为英文半角
  
  一、FUNCTION的作用:
  
  进行数据计算,修改 ......

Oracle 学习:PL/SQL循序渐进全面学习教程

 课程十 写执行语句
  
  本课重点:
  1、了解PLSQL执行区间的重要性
  2、写执行语句
  3、描述嵌套块的规则
  4、执行且测试PLSQL块
  5、使用代码惯例
  
  注意:以下实例中标点均为英文半角
  
  一、PLSQL 块的语法规则:
  1、语句可以跨跃几行。
  2、词汇单元可以包 ......

Oracle 学习:PL/SQL循序渐进全面学习教程

 最后一课 异常处理本章重点:
  
  1、定义PLSQL异常
  2、列举不同的异常处理方法
  3、捕获非预期的错误
  4、描述异常的影响
  5、定制异常的返回信息  一、PLSQL异常处理
  异常是由ORACLE错误或显式的抛出一个错误产生的。
  如何处理:
  用一个处理程序来捕获它;
  将它传递 ......

sql外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT

 NO ACTION
指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。
CASCADE、SET NULL 和 SET DEFAULT
允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操 ......

一个稍微修改的SQL无限分级

前段时间  把之前的无限分级表稍微做了一些改进 改进后的表结构如下
ID  Name  ParentID ParentIDList  level
1    A          0             0-1   &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号