有表 T 结构如下:
   id   name   qty
   1    a       10
   2    b       20
   3    c       40
   4    a       10
现在想更改如下:
   id   name    qty
   1     a      10
   2     b      20
   3     c      40
   4     a      0
请高手指教!最好能附上代码,谢
 

解决方案 »

  1.   

    请解释一下为什么最后一位10要update为0.
      

  2.   


    目的是在对QTY列与其他列计算时去掉重复的
      

  3.   

    -- try
    update yourTable
       set qty = 0
     where id in (select id
                    from (select t.*,
                                 row_number() over(partition by name, qty order by id) rn
                            from yourTable t)
                   where rn <> 1)
      

  4.   

    -- TRY IT ..
    UPDATE TT T1
       SET QTY = 0
     WHERE EXISTS (SELECT 1
              FROM TT T2
             WHERE T1.NAME = T2.NAME
               AND T1.ID > T2.ID);