如果还没有导入进来,可以在导入时写个select语句进行约束。
如果已经导入进来了,只能写查询删除,我想方法应该很多。增加主键我想可以在导入之前把表手工建好再进行导入,也可以导入之后增加列,指定为Identity列.

解决方案 »

  1.   

    看看这儿吧
    http://www.enet.com.cn/esafe/inforcenter/A20041022354989.html
      

  2.   

    以下就重复记录删除的问题作一阐述。 有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
    1、对于第一种重复,比较容易解决,使用
    select distinct * from tableName
    就可以得到无重复记录的结果集。
    如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
    select distinct * into #Tmp from tableName
    drop table tableName
    select * into tableName from #Tmp
    drop table #Tmp
    发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
    假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
    select identity(int,1,1) as autoID, * into #Tmp from tableName
    select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
    select * from #Tmp where autoID in(select autoID from #tmp2)
    最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
      

  3.   

    --示例数据库
    IF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_SOURCE' 
      AND   type = 'U')
        DROP TABLE T_SOURCE
    GOCREATE TABLE T_SOURCE(
    COL1 VARCHAR(20), 
    COL2 VARCHAR(20),
    COL3 INT
    )
    GO
    IF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_TEMP' 
      AND   type = 'U')
        DROP TABLE T_TEMP
    GOCREATE TABLE T_TEMP(
    COL1 VARCHAR(20), 
    COL2 VARCHAR(20),
    COL3 INT
    )
    GOIF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_DESTINATION' 
      AND   type = 'U')
        DROP TABLE T_DESTINATION
    GOCREATE TABLE T_DESTINATION(
    [ID] INT NOT NULL IDENTITY (1, 1),
    COL1 VARCHAR(20), 
    COL2 VARCHAR(20),
    COL3 INT
    )
    GO
    ALTER TABLE T_DESTINATION ADD CONSTRAINT
    PK_T_DESTINATION PRIMARY KEY CLUSTERED 
    (
    [ID]
    )
    IF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_FORCOL1' 
      AND   type = 'U')
        DROP TABLE T_FORCOL1
    GOCREATE TABLE T_FORCOL1(
    FORCOL1 VARCHAR(20)
    )
    GO
    IF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_FORCOL2' 
      AND   type = 'U')
        DROP TABLE T_FORCOL2
    GOCREATE TABLE T_FORCOL2(
    FORCOL2 VARCHAR(20)
    )
    GOIF EXISTS(SELECT name 
      FROM   sysobjects 
      WHERE  name = N'T_CROSS_COL' 
      AND   type = 'U')
        DROP TABLE T_CROSS_COL
    GOCREATE TABLE T_CROSS_COL(
    FORCOL1 VARCHAR(20)
    ,FORCOL2 VARCHAR(20)
    )
    GO------------------------------------------------------
    INSERT T_SOURCE VALUES('A',1,1)
    INSERT T_SOURCE VALUES('A',1,1)
    INSERT T_SOURCE VALUES('A',2,1)
    INSERT T_SOURCE VALUES('B',1,1)
    INSERT T_SOURCE VALUES('B',1,1)
    INSERT T_SOURCE VALUES('B',1,1)
    INSERT T_SOURCE VALUES('B',2,1)
    INSERT T_SOURCE VALUES('B',2,2)-------------------------------------------------以上是基础数据INSERT INTO T_FORCOL1
    SELECT DISTINCT
    COL1
    FROM T_SOURCE
    INSERT INTO T_FORCOL2
    SELECT DISTINCT
    COL2
    FROM T_SOURCEINSERT INTO T_CROSS_COL
    SELECT A.FORCOL1,B.FORCOL2
    FROM T_FORCOL1 A
    CROSS JOIN T_FORCOL2 B
    INSERT INTO T_TEMP
    SELECT DISTINCT
    COL1
    ,COL2
    ,COL3
    FROM T_SOURCEINSERT INTO T_DESTINATION (COL1,COL2,COL3)
    SELECT DISTINCT 
    A.COL1
    ,A.COL2
    ,SUM (A.COL3)
    FROM T_TEMP A
    INNER JOIN T_CROSS_COL B ON(A.COL1 = B.FORCOL1 AND A.COL2 = B.FORCOL2)
    GROUP BY A.COL1,A.COL2
      

  4.   

    实际上用group by就可以了,Select 名称,型号,sum(数量) into 新表名 From 表 Group by 名称,型号。
      

  5.   

    例如下例可去重复记录:
    begin tran
    select * 
    into #TempTable
    from 表delete 表insert into 表(名称,型号,数量)
    select distinct 名称,型号,数量 from #TempTablesdrop table #TempTable
    commit tran
      

  6.   

    如果表已经导入,再增加主键:alter table 表名
    add 列名 int identity(1,1)或通过企业管理器完成。
      

  7.   

    按chsfly(一蓑烟雨任平生)说的应该可以搞顶了,只是递归嵌套太多的话效率很低
      

  8.   

    http://it.rising.com.cn/newSite/Channels/Safety/SysSafety/Safe_Database/200410/25-095917243.htm
      

  9.   

    啊哦,这么复杂啊,简单一点不好吗?你先放心导入到sqlserver中,假设为a表,然后建一个结构和导入表完全一样的表,假设为b表吧,然后嘛,嘿嘿:insert into b select distinct * from a