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

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


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

相关文章:

你感兴趣的文章:

标签云: