你如果那样删还不如用select distinct取出来放到另一个表中呢!

解决方案 »

  1.   

    具体的说:数据库名view.mdb,表名produce,现在我想在其中"审批编号","物资名称","单价"和"日期"四个字段完全的记录中只留下一个记录!
    谢谢,分不够可以再加!SELECT a.* into CompactProduce 
    FROM PRODUCE a, 
    (
    SELECT 物资名称, 单价, 日期, min(自动记录编号) 最小记录编号 
    FROM PRODUCE
    ) b
    WHERE a.物资名称=b.物资名称 AND a.单价=b.单价 AND a.日期=b.日期 AND a.自动记录编号=b.最小自动记录编号
      

  2.   


    delect table where id not in (  select max(id) from table group by col1,col2,col3...
    )
      

  3.   

    CrazyFor(冬眠的鼹鼠)大哥,我大部分数据都没重复,重复的只是少数,这样会把没重复的数据删掉啊.
    athossmth(athos) 大哥,没看懂你的意思
    zhanqiangz(闲云野鹤)大哥,如果用select distinct(物资名称,审批编号,单价) from...
    有这种写法吗?是不是指括号里面3项全都不一样才选择呢?
      

  4.   

    CrazyFor(冬眠的鼹鼠) 的好delete * from table where id not in (  select max(id) from table group by col1,col2,col3...
    )--access数据库
      

  5.   

    delete from  table where 第一列的自动记录编号 not in 
    (
    select min(第一列的自动记录编号) from table group by 
    审批编号,物资名称,单价,日期 having count(*) >1
    )
      

  6.   

    DELETE FROM YourTable WHERE ID IN (SELECT MAX(ID) AS ID FROM Yourtable GROUP BY 审批编号,物资名称,单价,日期 HAVING COUNT(ID) > 1))
      

  7.   

    你可以把查出来的数据放在一个新表中,再删除旧表,再将新表表名改为原来的不就得了你如果那样删还不如用select distinct取出来放到另一个表中呢!
      

  8.   

    虫子说的很正确,应该用IN而不是NOT IN,不然会删掉有用数据,揭帖了!!!!!!!!!!!!!!
      

  9.   

    declare @审批编号 varchar(30),@物资名称 varchar(30),@单价 varchar(30),@日期  varchar(30)
    declare Cur1 Cursor for 
    select distinct 审批编号,物资名称,单价,日期 from table1 
    open Cur1
      Fetch Next from Cur1 into @审批编号,@物资名称,@单价,@日期 
      While @@Fetch_status=0
      begin
          declare Cur2 Cursor for select * from table1 where 审批编号=@审批编号,物资=@物资名称,单价=@单价,日期=@日期
          open Cur2
          fetch next from Cur2  --留下第一条
          fetch next from Cur2
          while @@fetch_status=0
           begin 
              delete from table1 where current of Cur2
              fetch next from Cur2
           end  
          Close Cur2
          DealLocate Cur2
          Fetch Next from Cur1 into @审批编号,@物资名称,@单价,@日期 
      end
    close Cur1
    Deallocate Cur1