多表查询,遍历更新数据

_VINCE_ 2014-03-07 03:11:41
有个用户表member (id,userid,spday)
消费表shop (id,userid,dtime)

想查询最后一次消费的时间,然后和当前时间的相差天数,然后累加到用户表的spday内。sql语句应该怎么写呀?
...全文
104 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2014-03-07
  • 打赏
  • 举报
回复
引用 2 楼 qq705540946 的回复:
如果要过滤掉以前的时间呢?就是shop表内的dtime一般都是以后的时间,是有效期,但是也可能是今天之前的时间,这个时间就不要了。这个怎么过滤掉啊?

update a
 set a.spday=datediff(d,getdate(),b.maxdtime)
 from member a
 inner join
 (select userid,
         max(dtime) 'maxdtime' 
  from shop 
  where dtime>=cast(convert(varchar,getdate(),111)+' 00:00:00' as datetime)
  group by userid) b on a.userid=b.userid
_VINCE_ 2014-03-07
  • 打赏
  • 举报
回复
引用 1 楼 ap0405140 的回复:

update a
 set a.spday=datediff(d,b.maxdtime,getdate())
 from member a
 inner join
 (select userid,
         max(dtime) 'maxdtime' 
  from shop 
  group by userid) b on a.userid=b.userid
如果要过滤掉以前的时间呢?就是shop表内的dtime一般都是以后的时间,是有效期,但是也可能是今天之前的时间,这个时间就不要了。这个怎么过滤掉啊?
唐诗三百首 2014-03-07
  • 打赏
  • 举报
回复

update a
 set a.spday=datediff(d,b.maxdtime,getdate())
 from member a
 inner join
 (select userid,
         max(dtime) 'maxdtime' 
  from shop 
  group by userid) b on a.userid=b.userid

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧