表Region(ID,Name,Code)(主键,名称,助记码)
记录:
ID       Name       Code001      上海       SH      --省级
002       山东      SD      --省级
002001    济南      JN      --市级
002002    青岛      QD
003       江苏      JS
003001    徐州      XZ要求:将市级的助记码,改成其上级就是省级的助记码。比如将济南和青岛的助记码改成山东SD.
一条sql语句,该如何写?

解决方案 »

  1.   

    -------------------------------------
    --  Author : liangCK 梁爱兰
    --  Comment: 小梁 爱 兰儿
    --  Date   : 2009-11-11 19:39:55
    -------------------------------------
     
    --> 生成测试数据: @tb
    DECLARE @tb TABLE (ID varchar(6),Name varchar(4),Code varchar(2))
    INSERT INTO @tb
    SELECT '001','上海','SH' UNION ALL
    SELECT '002','山东','SD' UNION ALL
    SELECT '002001','济南','JN' UNION ALL
    SELECT '002002','青岛','QD' UNION ALL
    SELECT '003','江苏','JS' UNION ALL
    SELECT '003001','徐州','XZ'--SQL查询如下:UPDATE B SET
        Code = A.Code
    FROM @tb AS A
        JOIN @tb AS B
    ON LEN(B.ID) = 6 AND B.ID LIKE A.ID + '_%';SELECT * FROM @tb;
      

  2.   

    create table Region(ID nvarchar(10),[Name] nvarchar(10),Code nvarchar(10))insert into Region select 
    '001',             '上海',               'SH'            union all select
    '002',             '山东',             'SD'             union all select
    '002001',         '济南',             'JN'             union all select
    '002002',         '青岛',             'QD' union all select
    '003',               '江苏',             'JS'union all select
    '003001',         '徐州',             'XZ' update R2 set R2.Code=R1.Code
    from Region R1,Region R2
    where Substring(R2.ID,1,Len(R1.ID))=R1.ID   and R1.ID<>R2.ID
    select *  from Region 
    /*ID         Name       Code
    ---------- ---------- ----------
    001        上海         SH
    002        山东         SD
    002001     济南         SD
    002002     青岛         SD
    003        江苏         JS
    003001     徐州         JS(6 行受影响)*/
    drop table Region
      

  3.   

    Update 里面还可以Join On ,我晕。真没见过~惭愧惭愧~
      

  4.   

    [[--可以的
    create table Region(ID nvarchar(10),[Name] nvarchar(10),Code nvarchar(10))
    insert into Region select 
    '001',             '上海',               'SH'            union all select
    '002',             '山东',             'SD'             union all select
    '002001',         '济南',             'JN'             union all select
    '002002',         '青岛',             'QD' union all select
    '003',               '江苏',             'JS'union all select
    '003001',         '徐州',             'XZ' update R2 set R2.Code=R1.Code
    from Region R1
    join Region R2 on Substring(R2.ID,1,Len(R1.ID))=R1.ID   and R1.ID<>R2.IDselect * from Region
    /*ID         Name       Code
    ---------- ---------- ----------
    001        上海         SH
    002        山东         SD
    002001     济南         SD
    002002     青岛         SD
    003        江苏         JS
    003001     徐州         JS(6 行受影响)*/
    drop table Region