首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条容易的SQL语句写法,两表UPDATE

2012-11-01 
求一条简单的SQL语句写法,两表UPDATE大虾们,我有A表,B表两个表,在同一个数据库(SQL2005)中。 现在要求写一

求一条简单的SQL语句写法,两表UPDATE
大虾们,我有A表,B表两个表,在同一个数据库(SQL2005)中。 现在要求写一条语句实现这样的功能:

把A表记录中,字段 A.Nowtype更新为'到期',条件是: 假如A.STUDENTID=B.STUDENTID,并且B.Isend='到期' 的所有记录。

中文意思是:
  B表中放的是学生报的课程班(语文,数学,英语等),可能同一个学生会报很多门不同的课程班,当某个学生报的所有课程班,比如,语文、数学,都到期以后,则在学生信息表A表中,将a.nowtype更新为'到期'; 若B表中,某个学生报的课程班还有1个没有到期,则A表不更新。
  (B表中,学生报一个课程班,就有1条记录,报多个课程班,会有多个记录,和A表关联时,studentid是唯一的)


[解决办法]

SQL code
update Aset A.nowtype = '到期'from Ainner join B on A.STUDENTID=B.STUDENTID and B.Isend='到期'
[解决办法]
SQL code
update A set A.Nowtype='到期'from A join (  select STUDENTID   from B   group by STUDENTID   having count(*)=sum(case when Isend='到期' then 1 else 0 end))  T on A.STUDENTID=T.STUDENTID
[解决办法]
SQL code
update a set a.Nowtype='到期'from a ,  (select STUDENTID from B  group by STUDENTID having count(1)=sum(case when Isend='到期' then 1 else 0 end))bwhere a.STUDENTID=b.STUDENTID
[解决办法]
update a set Nowtype = '到期' from a where STUDENTID not in
(select distinct STUDENTID from b where B.Isend <> '到期')

[解决办法]
探讨
update a set Nowtype = '到期' from a where STUDENTID not in
(select distinct STUDENTID from b where B.Isend <> '到期')


这里面,not in应该是in吧?

[解决办法]
探讨
下午散分。谢谢

热点排行
Bad Request.