1) 先变量再字段
SET
NOCOUNT
ON
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
DECLARE
@i
INT
,
@j
INT
DECLARE
@Table
TABLE
(
Id1
INT
,
Id2
INT
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
INSERT
@Table
(Id1, Id2)
SELECT
1
,
10
UNION
ALL
SELECT
2
,
20
UNION
ALL
SELECT
3
,
30
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
Id1
=
@i
, Id2
=
Id1,
@i
=
@i
+
1
SELECT
*
FROM
@Table
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
Id1
=
@i
, Id2
=
@j
,
@j
=
@i
+
10
,
@i
=
@i
+
1
SELECT
*
FROM
@Table
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SET
NOCOUNT
OFF
;
结果:
Id1 Id2
----------- -----------
2 1
3 2
4 3
Id1 Id2
----------- -----------
2 11
3 12
4 13
2) 变量之间, 从左到右
SET
NOCOUNT
ON
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
DECLARE
@i
INT
,
@j
INT
DECLARE
@Table
TABLE
(
Id1
INT
,
Id2
INT
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
INSERT
@Table
(Id1, Id2)
SELECT
1
,
10
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
@j
=
@i
,
@i
=
@i
+
1
PRINT
'
@i =
'
+
CAST
(
@i
AS
VARCHAR
)
+
'
, @j =
'
+
CAST
(
@j
AS
VARCHAR
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
@i
=
@i
+
1
,
@j
=
@i
PRINT
'
@i =
'
+
CAST
(
@i
AS
VARCHAR
)
+
'
, @j =
'
+
CAST
(
@j
AS
VARCHAR
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
@i
=
@j
+
1
,
@j
=
@i
PRINT
'
@i =
'
+
CAST
(
@i
AS
VARCHAR
)
+
'
, @j =
'
+
CAST
(
@j
AS
VARCHAR
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SELECT
@i
=
1
,
@j
=
0
UPDATE
@Table
SET
@i
=
@j
,
@j
=
@i
PRINT
'
@i =
'
+
CAST
(
@i
AS
VARCHAR
)
+
'
, @j =
'
+
CAST
(
@j
AS
VARCHAR
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SET
NOCOUNT
OFF
;
结果:
@i = 2, @j = 1
@i = 2, @j = 2
@i = 1, @j = 1
@i = 0, @j = 0
3) 字段之间, 并行执行
SET
NOCOUNT
ON
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
DECLARE
@Table
TABLE
(
Id1
INT
, Id2
INT
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
INSERT
@Table
(Id1, Id2)
SELECT
1
,
10
UNION
ALL
SELECT
2
,
20
UNION
ALL
SELECT
3
,
30
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
UPDATE
@Table
SET
Id1
=
Id2, Id2
=
Id1
SELECT
*
FROM
@Table
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
SET
NOCOUNT
OFF
;
结果:
Id1 Id2
----------- -----------
10 1
20 2
30 3