mysql 关联查询求助

A,B表,A一对多B,现要查询A表list集合,关联B表,主要问题:联合查询时候只取B中第一条数据,例如:A有三条数据,B有6条数据,A一条数据对应B两条,正常关联结果为... A,B表,A一对多B,现要查询A表list集合,关联B表,主要问题:联合查询时候只取B中第一条数据,
例如:A有三条数据,B有6条数据,A一条数据对应B两条,正常关联结果为6条数据
现在关联的时候只查B中对应A的第一条数据,即查询结构只有3条
SQL如何写?
展开
 我来答
tjrmgs
2014-01-07 · TA获得超过5765个赞
知道大有可为答主
回答量:2161
采纳率:94%
帮助的人:1034万
展开全部

这个问题的难点在于如何找出B表中每个关联字段组中的第一条记录,对于MYSQL我们可以利用自增ID(auto_increment)的特性予以解决。

因为MySql不支持rownumber()这类开窗函数(ACCESS可以利用FIRST函数),如果B表里没有自增ID的话,建议先创建一个与B表结构相同的表,同时添补一个自增ID字段,然后将B表中的记录全部追加到这个新表里,跟着我们就可以利用这个自增ID字段来解决问题了。

 

下面是利用自增ID特性的解决方案

假设A,B表的关联字段名为(R_ID ),  B表里有一个自增ID字段(id)

select A.*,t2.* from A, 
(select * from B,  
(select min(id) as F_id from B group by R_ID)t 
where B.id=t.F_id))t2 
where A.R_ID=t2.R_ID

如果不想输出所有的字段,A.*,t2.*换成相应的具体字段即可

 

上面的代码也可以使用inner Join连接,但是经验告诉我其运行效率不如上面的写法高(不指定连接类型的等同连接)

 

MYSQL不利用自增ID的方法暂时未能找到。

万山数据
2024-11-14 广告
数据仓库处理是北京万山数据科技有限公司的核心业务之一。我们专注于高效、安全地处理大规模数据,通过先进的数据仓库技术,实现数据的集成、存储、管理和分析。我们的数据仓库解决方案能够支持复杂的数据查询和分析需求,提供实时的数据洞察,助力企业做出更... 点击进入详情页
本回答由万山数据提供
小狂中E
2014-01-07 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1026万
展开全部
select a.f1, b.f2, b.f3
from a join b on a.f1=b.f1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onedaymeetyou
2014-01-07 · 人生即是等待..等待...
onedaymeetyou
采纳数:96 获赞数:250

向TA提问 私信TA
展开全部
group by 利用A表的主键分组就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式