--先判断数据库中是否已存在该表,再删除库中已存在的表
select * from mail
drop table mailselect * from #t
drop table #t--创建表
declare @i int
set @i=1
create table mail (id int,username char(10),mailaddress char(40),groupid int)
while (@i<100)
begin
insert into mail select 1,'a','[email protected]',1 union all 
                  select 2,'b','[email protected]',1 union all
                  select 3,'c','[email protected]',1
set @i=@i+1
endinsert mail select 4,'d','[email protected]',1select * from mail--将mail表中的所有记录插入临时表#t中
select distinct *  into #t from mailselect * from #t--删除mail表中的所有行
truncate  table mailselect * from mail--先将mail表删除,再将临时表#t中的记录插入至mail表中
drop table mail--insert into mail (id,username,mailaddress,groupid) select * from #t这种方式?通不过select * into mail from #tselect * from mail问题:1)将临时表中的记录插入到源表中时,如果不事先将源表删除,那么在执行插入操作时,会显示“该库中已存在该表”信息,如果删除后再执行插入操作,则可以成功,那么,删除源表后,表明该库中已不存在该表,要对表进行操作,必须先创建该表。该表已删除后怎能插入成功呢?
     2)不借助临时表,如何实现直接在表中删除重复记录并只保留一个重复的记录呢?

解决方案 »

  1.   

    insert into mail (id,username,mailaddress,groupid) select * from #t
    --表已经被drop掉了。所以肯定通不过阿
      

  2.   

    truncate  table mailselect * from mail--先将mail表删除,再将临时表#t中的记录插入至mail表中
    --drop table mail 为什么要删掉呢,清空了直接插入就可以了阿insert into mail (id,username,mailaddress,groupid) select * from #t