读书人

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

发布时间: 2012-11-01 11:11:33 作者: rapoo

求一条简单的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吧?

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

读书人网 >SQL Server

热点推荐