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如何写? 展开
例如:A有三条数据,B有6条数据,A一条数据对应B两条,正常关联结果为6条数据
现在关联的时候只查B中对应A的第一条数据,即查询结构只有3条
SQL如何写? 展开
3个回答
展开全部
这个问题的难点在于如何找出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的方法暂时未能找到。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询