insert into b(col1,col2,col3)
select col1,col2,col3 from mytable(what the AUTID not in b)

解决方案 »

  1.   

    insert into b(col1,col2,col3)
    select col1,col2,col3 from mytable(what the AUTID not in b)
    这是写的什么啊?
      

  2.   

    假设原来的表为mytable,autid有重复,需要保留一笔即可
    建立一张具有和mytable相同结构的临时表mytemptable,单击鼠标右键,选择所有任务,选择管理索引,选择新建,起个索引名字,列就是autid,建立一个索引,勾选上唯一(unique),勾选上忽略重复的值,其他不要选择!然后把资料insert into到临时表,
    此时SQL Server会返回如下提示:
      服务器: 消息 3604,级别 16,状态 1,行 1
      已忽略重复的键。
      它表明在产品信息临时表Products_temp中不会有重复的行出现。然后将原表mytable清空,并将临时表mytemptable中数据导入,最后删除临时表mytemptable。
    这样就完成了对表中重复记录的删除。该方法的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。不过要依靠你的autid,万一你操作不当,没有关系,不要那么急着删除原来的表,这样不会出什么异常,错删除纪录!
      

  3.   

    insert into b(col1,col2,col3)
    select col1,col2,col3 from mytable where col1+col2+col3 not in (select col1+col2+col3 from b) group by col1,col2,col3
      

  4.   

    服务器: 消息 2627,级别 14,状态 1,行 3
    违反了 PRIMARY KEY 约束 'PK_SaveQty'。不能在对象 'SaveQty' 中插入重复键。
    语句已终止。
      

  5.   

    是什么时候插入错误,是从mytable插入到mytemptable,还是后来从mytemptable插入到mytable
     你建立的临时表mytemptable要和mytable的字段个数一样,位置一样,总之要相同的表!看我的测试例子:
    建立原来的表a:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[a]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[a]
    GOCREATE TABLE [dbo].[a] (
    [a_nam] [varchar] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
    [a_add] [varchar] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL 
    ) ON [PRIMARY]
    GO
    插入数据为:
    /*
    a_nam      a_add      
    ---------- ---------- 
    1          aa
    3          bb
    2          bb
    1          aa
    3          bb(5 row(s) affected)
    */然后建立一个和a相同结构的表:
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_a]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[test_a]
    GOCREATE TABLE [dbo].[test_a] (
    [a_nam] [varchar] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
    [a_add] [varchar] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL 
    ) ON [PRIMARY]
    GO
    --这个是我生成的脚本,我上面说的“列就是autid,建立一个索引,勾选上唯一(unique),勾选上忽略重复的值,其他不要选择!” 要用企业管理器自己设计!做好后:执行
    insert into test_a
    select * from a/*
    Server: Msg 3604, Level 16, State 1, Line 1
    Duplicate key was ignored.
    --意思就是已忽略重复的键。
    */然后,看到test_a的数据为:
    /*
    a_nam      a_add      
    ---------- ---------- 
    1          aa---重复的已经没有
    2          bb
    3          bb(3 row(s) affected)*/然后删除a表的数据:delete from a
    然后把test_a的数据导回来:insert into a select * from test_a即可!注意:建立的表要一抹一样的结构,当然名字要不一样,呵呵