已知a,b两个表。
表a的字段分别是xm,xb,nl,rk,bm (分别对应姓名、性别、年龄、人口、编码)
表b的字段是xh,xm,rk,bh,xb,nl,bz (分别对应序号、姓名、人口、编号、性别、年龄、备注)表b的结构如下:(序号可为空,这个表是家庭登记表,带序号的是户主,编号相同的是同一个家庭成员)部分字段如下:
序号 姓名 人口 编号
1 刘佩彬 4 1001
李秋梅 1001
刘敏 1001
刘佳 1001
2 黄诗锋 3 1002
李艳云 1002
黄书芳 1002
3 陈巧莲 4 1003
黄香州 1003
黄景景 1003
黄灿 1003
4 胡新桥 1 1004
5 成国善 4 1005
胡桂珍 1005
成锦 1005
成秀 1005
1 范德萨 1 1006
2 杨志 3 1007
小兰 1007
发财 1007
3 刘欢 1 1008
表a全为户主的记录,表b是包括户主在内的所有家庭成员,表a、b互有对方没有的户主(即家庭)。
为了得到表a、b中户主相同的家庭成员资料,我的语句是select * from b where bh in (select b.bh from a,b where a.xm=b.xm and a.xb=b.xb a.nl=b.nl and b.xh is not null);
但表b中的户主的相关信息不是很准,比如字段“人口”要以表a的人口为准。想把最后的查询结果中的rk换成表a中的rk,请问怎么替换?
表a的字段分别是xm,xb,nl,rk,bm (分别对应姓名、性别、年龄、人口、编码)
表b的字段是xh,xm,rk,bh,xb,nl,bz (分别对应序号、姓名、人口、编号、性别、年龄、备注)表b的结构如下:(序号可为空,这个表是家庭登记表,带序号的是户主,编号相同的是同一个家庭成员)部分字段如下:
序号 姓名 人口 编号
1 刘佩彬 4 1001
李秋梅 1001
刘敏 1001
刘佳 1001
2 黄诗锋 3 1002
李艳云 1002
黄书芳 1002
3 陈巧莲 4 1003
黄香州 1003
黄景景 1003
黄灿 1003
4 胡新桥 1 1004
5 成国善 4 1005
胡桂珍 1005
成锦 1005
成秀 1005
1 范德萨 1 1006
2 杨志 3 1007
小兰 1007
发财 1007
3 刘欢 1 1008
表a全为户主的记录,表b是包括户主在内的所有家庭成员,表a、b互有对方没有的户主(即家庭)。
为了得到表a、b中户主相同的家庭成员资料,我的语句是select * from b where bh in (select b.bh from a,b where a.xm=b.xm and a.xb=b.xb a.nl=b.nl and b.xh is not null);
但表b中的户主的相关信息不是很准,比如字段“人口”要以表a的人口为准。想把最后的查询结果中的rk换成表a中的rk,请问怎么替换?
set rk=a.rk
from a,b
where a.xm=b.xm and a.xb=b.xb a.nl=b.nl and b.xh is not null