急急急!关于SQL语句修改数据库数据, 如图所示

tololo 2016-06-27 10:14:17
这是第一张表的数据:

这是第二张表的数据:

他们之间StudentId关联,现在要将第二张表中的数据更新到对应数据的字段里面,并且要满足第一张表的字段如果为空的话就更新,不为空就不更新,更新一个字段就把第一张表中的Ucount加 1,综合上面两个图得到的结果是下面这样:
,请问SQL语句怎么写才可以实现这样的结果
...全文
147 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tololo 2016-06-27
  • 打赏
  • 举报
回复
引用 8 楼 misterliwei 的回复:
这样?

update B
set b.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 


update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age)
from student  a
join studentversion  b
on a.id  = b.studentid 

我刚准备这样试试的你就贴出代码了,就是这样的,非常感谢
misterliwei 2016-06-27
  • 打赏
  • 举报
回复
这样?

update B
set b.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 


update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age)
from student  a
join studentversion  b
on a.id  = b.studentid 

tololo 2016-06-27
  • 打赏
  • 举报
回复
引用 6 楼 misterliwei 的回复:
[quote=引用 5 楼 u013331731 的回复:] [quote=引用 4 楼 misterliwei 的回复:]

update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age), a.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END
                                                                           +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 
非常感谢,还有一个问题就是 如果第二张表里面也有一个统计更新字段个数的字段话能不能也同时做到同样的效果?[/quote] 一个更新语句一次只能更新一个数据表。 还有,你想得到什么样的效果?[/quote]主要就是别人设计表的问题,现在主要的就是第一张的那个统计更新字段的个数其实是在第二张表中的
misterliwei 2016-06-27
  • 打赏
  • 举报
回复
引用 5 楼 u013331731 的回复:
[quote=引用 4 楼 misterliwei 的回复:]

update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age), a.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END
                                                                           +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 
非常感谢,还有一个问题就是 如果第二张表里面也有一个统计更新字段个数的字段话能不能也同时做到同样的效果?[/quote] 一个更新语句一次只能更新一个数据表。 还有,你想得到什么样的效果?
tololo 2016-06-27
  • 打赏
  • 举报
回复
引用 4 楼 misterliwei 的回复:

update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age), a.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END
                                                                           +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 
非常感谢,还有一个问题就是 如果第二张表里面也有一个统计更新字段个数的字段话能不能也同时做到同样的效果?
misterliwei 2016-06-27
  • 打赏
  • 举报
回复

update A
set a.name=ISNULL(a.name, b.name), a.age = ISNULL(a.age, b.age), a.ucount   = case when a.name IS NULL THEN 1 ELSE 0 END
                                                                           +  case when a.age IS NULL THEN 1 ELSE 0 END
from student  a
join studentversion  b
on a.id  = b.studentid 
tololo 2016-06-27
  • 打赏
  • 举报
回复
自己先顶一下,在线等!!!!!!!!!!!!
tololo 2016-06-27
  • 打赏
  • 举报
回复
顶顶顶。。。。。。。。。。。。。。。
tololo 2016-06-27
  • 打赏
  • 举报
回复
别沉了,求大神帮忙!!!!!!!!!!!

22,302

社区成员

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

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