DECLARE @t TABLE(col1 VARCHAR(50),col2 VARCHAR(50))
INSERT INTO @t(col1,col2)
SELECT '1' ,'2'UNION ALL
SELECT '234'      ,'2'UNION ALL
SELECT '234'      ,'2'UNION ALL
SELECT '3' ,'2'UNION ALL
SELECT '3' ,'2'UNION ALL
SELECT '4' ,'2'我想通过update 修改col2为newID(),条件是当第一行col1和第2行col1相同时;第二行col2和第2行col2相同,col2的值也是相同的
update @t set col2=newID()..........???
这个update语句如何写啊?结果类似
id          col1                             col2
----------- --------    --------------------------------------
1           1             5D14C9F1-FC0F-484E-A5DC-D1AE4C14B930
2           234           CBAF6B21-F871-4037-B534-9FDA6C1E3A9B
3           234           CBAF6B21-F871-4037-B534-9FDA6C1E3A9B
4           3             9ECAE07E-7E8E-4587-BEED-214E2B8C4C92
5           3             9ECAE07E-7E8E-4587-BEED-214E2B8C4C92
6           4             AA9F6F00-CD1F-41BD-88A3-0C6BC2137327

解决方案 »

  1.   

    update两次:DECLARE @t TABLE(col1 VARCHAR(50),col2 VARCHAR(50))
    INSERT INTO @t(col1,col2)
    SELECT '1' ,'2' UNION ALL
    SELECT '234','2' UNION ALL
    SELECT '234','2' UNION ALL
    SELECT '3' ,'2' UNION ALL
    SELECT '3' ,'2' UNION ALL
    SELECT '4' ,'2'update @t set col2=newid()update t set col2=(select max(col2) from @t where col1=t.col1)  from @t tselect * from @t
      

  2.   

    update @t set col2=newID() where col1 = (select top 1 a.col1 from @t a where a.id>@t.id order by a.id ) and col2 = (select top 1 a.col2 from @t a where a.id>@t.id order by a.id )
      

  3.   

    多谢libin_ftsafeto yrwx001
    你的SQL有问题