SQL SERVER里的赋值机制闲聊
2011-03-02 23:24
316 查看
纯属闲谈,没什么好写,以前也碰过在SQL里连续赋值的问题,今天自己处理个东西也碰上,举个简单的例子来说吧,用户表里有两个时间字段(CurrentDate,LastDate分别代表当前登录时间和上次登录时间),一个是上次登录时间,一个是当前登录时间,要求用户登录后记录当前更新时间,同时更新上次登录时间,当然第一次登录时上次登录时间是为空的,第二次登录应该是有值的。很简单第二次登录时先把 第一次登录的CurrentDate的值赋值给LastDate,然后给CurrentDate赋值getdate()就可以了。问题是这条更新语句怎么写最恰当。可能最容易想到的是这样的
declare @date datetime
select @date=CurrentDate from users where ...
update users set LastDate = @date,CurrentDate=getdate() where ...
写到第三句基本上应该能想到连续赋值了,一般的计算机语言都是从右到左赋值的,多表达式的连续赋值计算优先级也是从右至左的,在SQL SERVER里也一样的,明白了这点,最佳的方式应该是这样写
update users set CurrentDate=getdate() , LastDate = CurrentDate where ...
算是啰嗦下~~
declare @date datetime
select @date=CurrentDate from users where ...
update users set LastDate = @date,CurrentDate=getdate() where ...
写到第三句基本上应该能想到连续赋值了,一般的计算机语言都是从右到左赋值的,多表达式的连续赋值计算优先级也是从右至左的,在SQL SERVER里也一样的,明白了这点,最佳的方式应该是这样写
update users set CurrentDate=getdate() , LastDate = CurrentDate where ...
算是啰嗦下~~
相关文章推荐
- SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
- golang---利用反射机制对结构体进行循环赋值
- Sql Server Tempdb原理-日志机制解析实践
- Sql Server之旅——第十四站 深入的探讨锁机制
- SQL SERVER 存储过程中SELECT 返回值如何赋值给变量
- 闲聊Mysql的锁与事务和java中的锁机制
- SQL SERVER 变量赋值
- 栈(stack)与堆(heap)区别以及Java的string变量赋值的内部工作机制(精典转载贴)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 每日学习总结:"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"、Sql Server 连接池机制
- sql server中SELECT 与 SET 赋值的区别
- SQL SERVER 数据库备份压缩机制
- SQL server 存储过程实现统计赋值
- SQL SERVER的锁机制(一)——概述(锁的种类与范围)
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- SQL Server存储机制
- PHP5 的对象赋值机制介绍
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值