表 A
AID NAME AGE
1 aaa 18
2 bbb 17
3 ccc 16表 B
BID AID Subject Mark
1 1 语文 97
2 1 数学 99
3 2 数学 88
想得到结果 AID NAME AGE BID
1 aaa 18 1
2 bbb 17 3
3 ccc 16 null说明: 期望结果,我将根据BID是否为null来判断此生是否参加了考试(考试了1科及以上为参加了考试,否则为NULL)
所以结果中的BID是几并不要求,要求的是不为null,如 对于aaa 结果BID可以为1,也可以为2,
因为他即参加了语文考试,又参加了数学考试,只要BID不为null就说明他参加了考试试验: select a.*,b.bid from a left outer join b on a.aid = b.aid
结果
AID NAME AGE BID
1 aaa 18 1
1 aaa 18 2
2 bbb 17 3
3 ccc 16 null
不符合要求,因为 aaa重复记录..在线等结帖~~~~~`
AID NAME AGE
1 aaa 18
2 bbb 17
3 ccc 16表 B
BID AID Subject Mark
1 1 语文 97
2 1 数学 99
3 2 数学 88
想得到结果 AID NAME AGE BID
1 aaa 18 1
2 bbb 17 3
3 ccc 16 null说明: 期望结果,我将根据BID是否为null来判断此生是否参加了考试(考试了1科及以上为参加了考试,否则为NULL)
所以结果中的BID是几并不要求,要求的是不为null,如 对于aaa 结果BID可以为1,也可以为2,
因为他即参加了语文考试,又参加了数学考试,只要BID不为null就说明他参加了考试试验: select a.*,b.bid from a left outer join b on a.aid = b.aid
结果
AID NAME AGE BID
1 aaa 18 1
1 aaa 18 2
2 bbb 17 3
3 ccc 16 null
不符合要求,因为 aaa重复记录..在线等结帖~~~~~`
解决方案 »
- 求表格数据合并的脚本(紧急)
- 存储过程问题,编译通过,执行报错
- SQL2005怎么备份为一个bak文件?
- 求助:如何让别台机器连接本台机器上的SQL Server数据库
- SQL Server2000中关于增加数据库文件的问题
- 如何取得唯一性索引定义描述串?
- 谁能介绍一下isqlw工具的用法(DOS下),有点难度
- 求助,sql语句的设计!
- 通过SQLCLR获取SQLServer服务器上控制面板设定的日期格式不正确?
- 急!!!!!error 926 database 'msdb' cannot be opened
- 能不能帮我优化下这个存储过程啊,拜托了
- 如何查找出数据库中字段名为"X"的表有多少张?
GOcreate table A(AID int, NAME varchar(10), AGE int)
insert A
select 1, 'aaa', 18
union all select 2, 'bbb', 17
union all select 3, 'ccc', 16create table B(BID int, AID int, Subject varchar(20), Mark float)
insert B
select 1,1,'Language Arts', 97
union all select 2, 1, 'Mathematics', 99
union all select 3, 2, 'Mathematics', 88select A.*, BB.BID
from A
left join (SELECT count(BID) as BID, AID FROM B GROUP BY AID) AS BB ON A.AID = BB.AIDdrop table A
drop table B
AID NAME AGE BID
----------- ---------- ----------- -----------
1 aaa 18 2
2 bbb 17 1
3 ccc 16 NULL
from A left join (select AID, BID=min(BID) from B group by AID) B on A.AID=B.AID
insert A
select 1, 'aaa', 18
union all select 2, 'bbb', 17
union all select 3, 'ccc', 16create table B(BID int, AID int, Subject varchar(20), Mark float)
insert B
select 1,1,'Language Arts', 97
union all select 2, 1, 'Mathematics', 99
union all select 3, 2, 'Mathematics', 88select A.AID, NAME, AGE, BID
from A left join (select AID, BID=min(BID) from B group by AID) B on A.AID=B.AIDdrop table A
drop table B/*
AID NAME AGE BID
----------- ---------- ----------- -----------
1 aaa 18 1
2 bbb 17 3
3 ccc 16 NULL(3 row(s) affected)
*/