现有一下表
ID   ONE   TWO   THREE
1    军1   师1   旅1
2    军1   师1   旅2
3    军2   师2   旅3
4    军2   师2   旅4
5    军3   师3   旅5
6    军3   师3   旅6
7    军3   师4   旅7
变换为以下表
ID   ONE   TWO   THREE
1    军1   师1   旅1
2    军1   师1   旅2
3    军1   师2   旅3
4    军1   师2   旅4
5    军3   师3   旅5
6    军3   师3   旅6
7    军3   师3   旅7
请问怎样实现?谢谢!

解决方案 »

  1.   

    --> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([ID] [int],[ONE] [nvarchar](10),[TWO] [nvarchar](10),[THREE] [nvarchar](10))
    INSERT INTO [tb]
    SELECT '1','军1','师1','旅1' UNION ALL
    SELECT '2','军1','师1','旅2' UNION ALL
    SELECT '3','军2','师2','旅3' UNION ALL
    SELECT '4','军2','师2','旅4' UNION ALL
    SELECT '5','军3','师3','旅5' UNION ALL
    SELECT '6','军3','师3','旅6' UNION ALL
    SELECT '7','军3','师4','旅7'
    -->SQL查询如下:UPDATE tb SET [ONE]='军1' WHERE [TWO]='师2'
    UPDATE tb SET [ONE]='师3' WHERE [TWO]='旅7'SELECT * FROM tb
    /*
    ID          ONE        TWO        THREE
    ----------- ---------- ---------- ----------
    1           军1         师1         旅1
    2           军1         师1         旅2
    3           军1         师2         旅3
    4           军1         师2         旅4
    5           军3         师3         旅5
    6           军3         师3         旅6
    7           军3         师4         旅7(7 行受影响)
    */?
      

  2.   

    --> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([ID] [int],[ONE] [nvarchar](10),[TWO] [nvarchar](10),[THREE] [nvarchar](10))
    INSERT INTO [tb]
    SELECT '1','军1','师1','旅1' UNION ALL
    SELECT '2','军1','师1','旅2' UNION ALL
    SELECT '3','军2','师2','旅3' UNION ALL
    SELECT '4','军2','师2','旅4' UNION ALL
    SELECT '5','军3','师3','旅5' UNION ALL
    SELECT '6','军3','师3','旅6' UNION ALL
    SELECT '7','军3','师4','旅7'
    -->SQL查询如下:UPDATE tb SET [ONE]='军1' WHERE [TWO]='师2'
    UPDATE tb SET [TWO]='师3' WHERE [THREE]='旅7'SELECT * FROM tb
    /*
    ID          ONE        TWO        THREE
    ----------- ---------- ---------- ----------
    1           军1         师1         旅1
    2           军1         师1         旅2
    3           军1         师2         旅3
    4           军1         师2         旅4
    5           军3         师3         旅5
    6           军3         师3         旅6
    7           军3         师3         旅7(7 行受影响)
    */midify
      

  3.   

    UPDATE table SET ONE = '军2' WHERE TWO = '师2';
    UPDATE table SET TWO = '师3' WHERE ID = 7;
    存储过程
    loop table
    if(id == 3 || id == 4)then
    UPDATE table SET ONE = '军2' WHERE TWO = '师2';
    if(id == 7)
    UPDATE table SET TWO = '师3' WHERE ID = 7;
      

  4.   

    ONE TWO THREE 代表部门一、二、三级别,不一定只修改二级部门的,例子就有三级部门,我的意思是修改所选部门的前一部门
      

  5.   

    LZ想要的应该是:UPDATE 表 SET ONE = '军1' WHERE TWO = '师2'
    UPDATE 表 SET TWO = '师3' WHERE THREE = '旅7'
    但这个表不符合三范式,如果有人不小心执行了:
    UPDATE 表 SET ONE = '军1' WHERE TWO = '旅3'
    那'师2'到底属于'军1'还是'军2'?这种部门从属关系表,标准的结构是:CREATE TABLE 部队表(
    UnitCode nvarchar(10) NOT NULL PRIMARY KEY CLUSTERED,
    ParentUnitCode nvarchar(10) NULL)UnitCode ParentUnitCode
    师1 军1
    师2 军2
    师3 军3
    师4 军3
    旅1 师1
    旅2 师1
    旅3 师2
    旅4 师2
    旅5 师3
    旅6 师3
    旅7 师4
      

  6.   

    UnitCode ParentUnitCode
    军1 NULL
    军2 NULL
    军3 NULL
    师1 军1
    师2 军2
    师3 军3
    师4 军3
    旅1 师1
    旅2 师1
    旅3 师2
    旅4 师2
    旅5 师3
    旅6 师3
    旅7 师4
      

  7.   

    update 表名 set ONE='军1' where TWO='师2'
    update 表名 set TWO='师3' where THREE='旅7'这个意思?顶16楼