A/B表为1对多关系,要求联合查询B表只提取一条与A记录关联的记录
A表字段有: aid int, name varchar(20)
B表字段有: bid int, name_id int, ports varchar(20)
B的name_id为外键关联到A表的aid,所以A/B表形成了一对多的关系。
想查询的结果集包括A表中的记录,同时在B表中提取第一条跟A表记录关联的记录。这个语句该怎么写?谢谢1
如:
A表 aid name
1 KLK
2 KSS
3 LKI
……
N ADD
B表 bid name_id ports
1 1 9089
2 1 8089
3 1 7089
4 2 6077
5 2 7077
6 3 8900
……
查询结果要求为:
aid bid ports
1 1 9089
2 4 6077
3 6 8900
谢谢!
------解决方案--------------------select A.aid,C.bid,B.ports
from A,(
select *
from B B1
where not exists (select 1 from B B2 where B1.name_id=B2.name_id and B1.id < B2.id)
)C
where A.name = C.name_id
------解决方案--------------------SELECT * FROM A INNER JOIN (
SELECT * FROM B A WHERE NOT EXISTS(SELECT 1 FROM B WHERE A.name_id=name_id and Aid>id)) C
ON A.aid=C.name_id
------解决方案--------------------SQL code
select *
from a ,b
whree a.aid=b.name_id
group by a.aid