• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

【闪电结贴】【50分求一SQL语句的含义】解决方案

mysql 搞代码 7年前 (2018-06-01) 164次浏览 已收录 0个评论

【闪电结贴】【50分求一SQL语句的含义】
UPDATE     XXX     SET   TOTAL=TOTAL+1,MONTHS=(IF   (MONTH(LAST_TIME)=MONTH(NOW()),MONTHS+1,1)),WEEKS=(IF   (YEARWEEK(LAST_TIME)=YEARWEEK(NOW()),WEEKS+1,1)),DAYS=(IF   (TO_DAYS(LAST_TIME)=TO_DAYS(NOW()),DAYS+1,1)),LAST_TIME=NOW()   WHERE   ZID= '20070420 '

嘿嘿,最好给点解释

——解决方案——————–
不能运行
——解决方案——————–
你这个不是MSSQL的吧?
——解决方案——————–
–try
UPDATE XXX SET TOTAL=TOTAL+1,
MONTHS=(case when(MONTH(LAST_TIME)=MONTH(NOW()) then MONTHS+1 else 1) end),
WEEKS=(case when (YEARWEEK(LAST_TIME)=YEARWEEK(NOW()) then WEEKS+1 else 1) end),
DAYS=(Icase when (TO_DAYS(LAST_TIME)=TO_DAYS(NOW()) then DAYS+1else ) end ),
LAST_TIME=NOW()
WHERE ZID= '20070420 '
——解决方案——————–
NOW(),TO_DAYS(),IF mssql都不能这么用阿
——解决方案——————–
IF 在T-SQL中不是函数!
用CASE WHEN
——解决方案——————–
NOW(),TO_DAYS(),IF mssql都不能这么用阿
====
GETDATE()
——解决方案——————–
UPDATE XXX SET TOTAL=TOTAL+1,
MONTHS=( case when MONTH(LAST_TIME)=MONTH(getdate()) then MONTHS+1 else 1 end ),
–当LAST_TIME字段的月和今天的月相等,MONTHS+1,否则为1
WEEKS=( case when DATEPART ( wk , LAST_TIME )=DATEPART (wk ,getdate()) then WEEKS+1 else 1 end ),–当LAST_TIME字段的周和今天的周相等,WEEKS+1,否则为1
DAYS=(( case when DAY(LAST_TIME )=DAY(getdate()) then DAYS+1 else 1 end )
–当LAST_TIME字段的日和今天的日相等,DAYS+1,否则为1
WHERE ZID= '20070420 '

你的应是这样~
——解决方案——————–
mysql里面必须有IF END 结构。
——解决方案——————–
操作数据表XXX,对于所有ZID为 '20070420 '的记录:
将TOTAL字段+1;
如果LAST_TIME字段所表示的月份等于当前月份,更新MONTHS字段+1,否则更新MONTHS为1;
如果LAST_TIME字段所表示的周是当前周,更新WEEKS字段+1,否则更新WEEKS为1;
如果LAST_TIME字段表示的日是当前日,更新DAYS字段+1,否则更新DAYS为1;
更新LAST_TIME地段为当前时间。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【闪电结贴】【50分求一SQL语句的含义】解决方案
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址