模板编码,代号,模板名称,明细编码,明细名称,数量
1  a   io  12  io1   14
1  a   io  13  io2   15
1  a   io  14  io3   70 
2  b   ib  15  io4   14
2  b   ib  16  io5   14
2  b   ib  17  io6   14
3  cd  icd 18  io7   14
3  cd  icd 19  io8   14
3  cd  icd 20  io9   14
3  cd  icd 21  io10  14
5  o   ioa 22  io11  14
6  k   ak  23  io12  14
7  l   al  24  io13  14
7  l   al  25  io14  14
8  u   au  26  io15  14
8  u   au  27  io16  14
8  u   au  28  io17  14
更新后结果为:
1  a   io  12  io1   14
           13  io2   15
           14  io3   70 
2  b   ib  15  io4   14
           16  io5   14
           17  io6   14
3  cd  icd 18  io7   14
           19  io8   14
           20  io9   14
           21  io10  14
5  o   ioa 22  io11  14
6  k   ak  23  io12  14
7  l   al  24  io13  14
           25  io14  14
8  u   au  26  io15  14
           27  io16  14
           28  io17  14
 谢谢

解决方案 »

  1.   

    UPDATE TB
    SET 字段1 = NULL
        , 字段2 = NULL
        , 字段3 = NULL
    FROM 表名 TB
    WHERE EXISTS(SELECT * FROM 表名 WHERE 字段1 = TB.字段1 AND 字段2 = TB.字段2
                   AND 字段3 = TB.字段3 AND 字段4 < TB.字段4)
      

  2.   

    uodate t1
    set 模板编码='',代号='',模板名称=''
    where 模板编码+代号+模板名称 not in (select top 1 模板编码+代号+模板名称 from t1 group by 模板编码,代号,模板名称)
      

  3.   

    --樓上語句有問題。--如果明细编码是這樣的規律的話Update

    Set 
    模板编码 = Null,
    代号 = Null,
    模板名称 = Null
    Where 
    明细编码 Not In (Select Min(明细编码) From 表 Group By 模板编码, 代号, 模板名称)
      

  4.   

    按楼上的语句UPDATE后.用SELECT 出来的结果不是1  a   io  12  io1   14
               13  io2   15
               14  io3   70 
    2  b   ib  15  io4   14
               16  io5   14
               17  io6   14
    3  cd  icd 18  io7   14
               19  io8   14
               20  io9   14
               21  io10  14
    5  o   ioa 22  io11  14
    6  k   ak  23  io12  14
    7  l   al  24  io13  14
               25  io14  14
    8  u   au  26  io15  14
               27  io16  14
               28  io17  14
      

  5.   

    Create Table 表
    (模板编码 Int,
     代号 Varchar(10),
     模板名称 Varchar(10),
     明细编码 Int,
     明细名称 Varchar(10),
     数量 Int)
    Insert 表 Select 1,  'a',   'io',  12,  'io1',   14
    Union All Select 1,  'a',   'io',  13,  'io2',   15
    Union All Select 1,  'a',   'io',  14,  'io3',   70 
    Union All Select 2,  'b',   'ib',  15,  'io4',   14
    Union All Select 2,  'b',   'ib',  16,  'io5',   14
    Union All Select 2,  'b',   'ib',  17,  'io6',   14
    Union All Select 3,  'cd',  'icd', 18,  'io7',   14
    Union All Select 3,  'cd',  'icd', 19,  'io8',   14
    Union All Select 3,  'cd',  'icd', 20,  'io9',   14
    Union All Select 3,  'cd',  'icd', 21,  'io10',  14
    Union All Select 5,  'o',   'ioa', 22,  'io11',  14
    Union All Select 6,  'k',   'ak',  23,  'io12',  14
    Union All Select 7,  'l',   'al',  24,  'io13',  14
    Union All Select 7,  'l',   'al',  25,  'io14',  14
    Union All Select 8,  'u',   'au',  26,  'io15',  14
    Union All Select 8,  'u',   'au',  27,  'io16',  14
    Union All Select 8,  'u',   'au',  28,  'io17',  14
    GO
    Update

    Set 
    模板编码 = Null,
    代号 = Null,
    模板名称 = Null
    Where 
    明细编码 Not In (Select Min(明细编码) From 表 Group By 模板编码, 代号, 模板名称)Select * From 表
    GO
    Drop Table 表
    --Result
    /*
    模板编码 代号 模板名称 明细编码 明细名称 数量
    1 a io 12 io1 14
    NULL NULL NULL 13 io2 15
    NULL NULL NULL 14 io3 70
    2 b ib 15 io4 14
    NULL NULL NULL 16 io5 14
    NULL NULL NULL 17 io6 14
    3 cd icd 18 io7 14
    NULL NULL NULL 19 io8 14
    NULL NULL NULL 20 io9 14
    NULL NULL NULL 21 io10 14
    5 o ioa 22 io11 14
    6 k ak 23 io12 14
    7 l al 24 io13 14
    NULL NULL NULL 25 io14 14
    8 u au 26 io15 14
    NULL NULL NULL 27 io16 14
    NULL NULL NULL 28 io17 14
    */
      

  6.   

    update 表
    set 模板编码 = null,代号 = null,模板名称 = null
    where
    明细编码 not in(select min(明细编码) from 表 group by 模板编码)
      

  7.   

    xwqjamky(陌上烟花) ( )
     
     
       按楼上的语句UPDATE后.用SELECT 出来的结果不是
    ----------
    结果是对
    楼主看一样你表中模板编码, 代号, 模板名称中字段值左右是不是有空格.最好去掉再分组