网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.高级复制中mlog$表的HWM过高导致.
.深入探讨数据仓库缓慢变化维的解.
.某些更改的非事务性表不能被回滚.
.MS SQL可写脚本和编程的扩展SSIS.
.把SQL SERVER里表里的数据导出成.
.数据库查询结果的动态排序(3).
.使用insert插入大量数据的个人经.
.袖珍数据库连接查询手册.
.sql server 添加数据库的方法.
.sql server的几个函数要记录.
.怎样用SQL 2000 生成XML.
.实例讲解SQL Server中非常有用EX.
.sql server 2008 对 t-sql 语言的.
.数据仓库基本报表制作过程中的SQ.
.从算法入手讲解SQL Server的典型.
.深入探讨SQL Server 2008商务智能.
.sql年月日计算方法.
.sql server2000还原模型的说明.
.SQL SERVER 2000系统支持的跟踪函.
.SQL Server 2005支持的两条新语法.

SQL SERVER UPDATE的赋值次序

发表日期:2007-4-25


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

上一篇:sqlserver2005(Express版)的配置 人气:4705
下一篇:SQL Server Compact Edition 程序建立步骤 人气:3057
浏览全部SQL SERVER的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐