一对多关系的查询问题(在线等)

sundoctor 2004-11-22 11:32:46
有表a
create table a(id char(10), a1 varchar(100),a2 varchar(100),a3 varchar(100),a4 varchar 100))
表b
create table b(id char(10), b1 varchar(60),b2 varchar(60),b3 varchar(60))
两张表,a与b是一对多的关系(a.id = b.id),我想取得a、b表中的数据
select * from a,b where a.id = b.id
这样取出来的数据总数是b表中数据的条数,比a表多,a表中取出的数据就
会有重复,如
a表:
id a1 a2 a3 a4
1 test1 test1 test1 test1
b表:
id b1 b2 b3
1 aaa aaa aaa
1 aa aa aa
1 a a a
结果如下:

id a1 a2 a3 a4 id b1 b2 b3
1 test1 test1 test1 test1 1 aaa aaa aaa
1 test1 test1 test1 test1 1 aa aa aa
1 test1 test1 test1 test1 1 a a a

如果我想取出的数据结果的总数以a表为准,b表中多条对应a表的数据随便只取一条即可,就以上数据我想取得如下结果
id a1 a2 a3 a4 id b1 b2 b3
1 test1 test1 test1 test1 1 aaa aaa aaa
该怎么写sql,请教各位大侠了。
...全文
196 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
了缘 2004-11-22
  • 打赏
  • 举报
回复
select a.*,c.* from a
left join
(select id,max(b1) as b1,max(b2) as b2,max(b3) as b3 from b group by id ) c on a.id=c.id
davorsuker39 2004-11-22
  • 打赏
  • 举报
回复
b表中多条对应a表的数据随便只取一条即可
select a.*,b.* from a表 a
join b表 b on a.id=c.id and b.id=(select top 1 id from b表 gruop by id )
davorsuker39 2004-11-22
  • 打赏
  • 举报
回复
wutao411(了缘) 这个不对!万一他的数据是
id a1 a2 a3 a4 id b1 b2 b3
1 test1 test1 test1 test1 1 aaa aa a
这种形式呢?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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