我只写到了查出名称相同的记录找出来:
SELECT a.*
                 FROM tbl_AppSupplier a INNER JOIN
                           (SELECT id, suppliercode
                          FROM tbl_AppSupplier
                          GROUP BY id, suppliercode
                          HAVING COUNT(*) > 1) b ON a.ID = b.id AND 
                       a.SupplierCode = b.suppliercode请各位帮忙!

解决方案 »

  1.   

    1.delete * from tbl_appSupplier a where suppliertype=0 and Suppliername in (select Suppliername    from  tbl_appSupplier b group by Suppliername having count(*)>=2)
    2.select Suppliername  into #t  from  tbl_appSupplier b group by Suppliername having count(*)>=2
    3.insert into tbl_appSupplier 
    select Suppliername,id,'0' from tbl_appSupplier group by Suppliername,id having  Suppliername in (select * from #t) 
      

  2.   

    DELETE FROM tbl_AppSupplier
    WHERE (SupplierType = 0) AND (SupplierCode IN
              (SELECT a.suppliercode
             FROM tbl_AppSupplier a INNER JOIN
                       (SELECT id, suppliercode
                      FROM tbl_AppSupplier
                      GROUP BY id, suppliercode
                      HAVING COUNT(*) > 1) b ON a.ID = b.id AND 
                   a.SupplierCode = b.suppliercode))我用以上的语句已经把等于0的删除了,下面怎么样插入数据呢?
      

  3.   

    新增加的记录中 suppliertype 值怎么确定??
      

  4.   

    新增加的记录中 suppliertype 值怎么确定??
    ----------------
    随机产生或者等于0即可
      

  5.   

    declare @@rowcountDELETE FROM tbl_AppSupplier
    WHERE (SupplierType = 0) AND (SupplierCode IN
              (SELECT a.suppliercode
             FROM tbl_AppSupplier a INNER JOIN
                       (SELECT id, suppliercode
                      FROM tbl_AppSupplier
                      GROUP BY id, suppliercode
                      HAVING COUNT(*) > 1) b ON a.ID = b.id AND 
                   a.SupplierCode = b.suppliercode))if @@rowcount=0else
    ....这样可以吗?
      

  6.   

    @@rowcount是系统的全局变量。不用声明。
    一般引用系统的全局变量,是自定义一个变量,然后将全局变量的值付给自定义变量,再使用。
    或者你直接这样判断:
    if @@rowcount=0else
    ....
      

  7.   

    --看得不是很清楚,是不是这个意思.--先删除
    delete a
    from @t a
    where not exists(select 1 from @t where Suppliername=a.Suppliername 
    and a.suppliertype<>0)--插入
    insert into @t 
    select Suppliername,
           ID,
           suppliertype=0
    from @t
      

  8.   

    前面的删除已经好了,但是怎么根据suppliertype<>0的记录的其他值插入数据呢?如:
    Suppliername   ID  suppliertype
     Supp          1     0 Supp          2     1 Supp          3     1把suppliertype=0的数据删除,然后根据suppliertype<>0的记录的id插入数据呢?
    变为:
    Suppliername   ID   suppliertype Supp          2      0 Supp          3      0 Supp          2      1 Supp          3      2
      

  9.   

    如果删除的数据的id和suppliertype<>0的数据的id一样就不用插入了.如:
    Suppliername   ID  suppliertype
     Supp          1     0 Supp          1     1这样只要删除suppliertype=0的数据即可,不要再插入了.
      

  10.   

    --保存要进行操作的数据到临时表
    select Suppliername  into #t  from  tbl_appSupplier b group by Suppliername having count(*)>=2
    --删除符合条件的记录
    delete * from tbl_appSupplier a where suppliertype=0 and Suppliername in (select Suppliername    from  tbl_appSupplier b group by Suppliername having count(*)>=2)
    --插入记录
    insert into tbl_appSupplier 
    select Suppliername,id,'0' from tbl_appSupplier group by Suppliername,id having  Suppliername in (select * from #t) 这样3句不可以吗?
      

  11.   

    to:churchatp1(别看资料,看聊效!) 多谢你的提醒,你的方法可行,我稍微改动了一些,已经满足要求了.