现有一下表
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
请问怎样实现?谢谢!
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
请问怎样实现?谢谢!
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 行受影响)
*/?
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
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;
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
军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
update 表名 set TWO='师3' where THREE='旅7'这个意思?顶16楼