今天在使用asp更新后台一个产品信息的时候,遇到一个问题:将放入仓库中的产品和审核通过的产品发布时间更新到当前发布时间,并将仓库中的产品放到审核通过中去,将推荐的产品的发布时间更新到当前时间,状态不改变。
status=1,2时,将产品的updatetime改成当前时间,并且将status改成1
status=3时,将产品的updatetime改成当前时间
'功能:sql update语句中也可以使用case
'作者:wangsdong
'来源:www.aspprogram.cn
'原创文章,转载请保留此信息,谢谢
表:product
ID productname status updatetime
___________________________________________
1 p1 2 2010-01-01 01:01:01
2 p2 1 2010-01-01 01:01:01
3 p4 3 2010-01-01 01:01:01
其中:status的意思
1 审核通过的产品
2 放入仓库中的产品
3 推荐中的产品
方法一:
使用asp全部读取,然后再使用asp判断,再更新。缺点:太浪费时间了,效率还不高。
方法二:
使用sql语句更新
update product set status=1,updatetime=getdate() where status=1 or status=2
update product set updatetime=getdate() where status=3
需要两句sql来解决
方法三:
现在利用case来两句sql语句合并成一句
update product set UpdateTime=GetDate(),status=(case when status=3 then '3' else '1' end)
搞定。太方便了,如果status还有其它状态,只要在else前面再加上when status=4 then '4' when
status=5 then '5'……
注意:这样的语句不支持access数据库。