首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

A/B表替1对多关系,要求联合查询B表只提取一条与A记录关联的记录

2012-09-23 
A/B表为1对多关系,要求联合查询B表只提取一条与A记录关联的记录A表字段有:aid int, name varchar(20)B表字

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 ,bwhree a.aid=b.name_idgroup by a.aid 

热点排行