SQL SERVER UPDATE的赋值次序

王朝mssql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

1) 先变量再字段

SET NOCOUNT ON;

DECLARE @i INT, @j INT

DECLARE @Table TABLE

(

Id1 INT,

Id2 INT

);

INSERT @Table(Id1, Id2)

SELECT 1, 10

UNION ALL

SELECT 2, 20

UNION ALL

SELECT 3, 30;

SELECT @i = 1, @j = 0

UPDATE @Table SET Id1 = @i, Id2 = Id1, @i = @i + 1

SELECT * FROM @Table

SELECT @i = 1, @j = 0

UPDATE @Table SET Id1 = @i, Id2 = @j, @j = @i + 10, @i = @i + 1

SELECT * FROM @Table

SET NOCOUNT OFF;

结果:

Id1 Id2

----------- -----------

2 1

3 2

4 3

Id1 Id2

----------- -----------

2 11

3 12

4 13

2) 变量之间, 从左到右

SET NOCOUNT ON;

DECLARE @i INT, @j INT

DECLARE @Table TABLE

(

Id1 INT,

Id2 INT

);

INSERT @Table(Id1, Id2)

SELECT 1, 10;

SELECT @i = 1, @j = 0

UPDATE @Table SET @j = @i, @i = @i + 1

PRINT '@i = ' + CAST(@i AS VARCHAR) + ', @j = ' + CAST(@j AS VARCHAR)

SELECT @i = 1, @j = 0

UPDATE @Table SET @i = @i + 1, @j = @i

PRINT '@i = ' + CAST(@i AS VARCHAR) + ', @j = ' + CAST(@j AS VARCHAR)

SELECT @i = 1, @j = 0

UPDATE @Table SET @i = @j + 1, @j = @i

PRINT '@i = ' + CAST(@i AS VARCHAR) + ', @j = ' + CAST(@j AS VARCHAR)

SELECT @i = 1, @j = 0

UPDATE @Table SET @i = @j, @j = @i

PRINT '@i = ' + CAST(@i AS VARCHAR) + ', @j = ' + CAST(@j AS VARCHAR)

SET NOCOUNT OFF;

结果:

@i = 2, @j = 1

@i = 2, @j = 2

@i = 1, @j = 1

@i = 0, @j = 0

3) 字段之间, 并行执行

SET NOCOUNT ON;

DECLARE @Table TABLE

(

Id1 INT, Id2 INT

);

INSERT @Table(Id1, Id2)

SELECT 1, 10

UNION ALL

SELECT 2, 20

UNION ALL

SELECT 3, 30;

UPDATE @Table SET Id1 = Id2, Id2 = Id1

SELECT * FROM @Table

SET NOCOUNT OFF;

结果:

Id1 Id2

----------- -----------

10 1

20 2

30 3

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航