因为MySql不支持rownumber()这类开窗函数(ACCESS可以利用FIRST函数),如果B表里没有自增ID的话,建议先创建一个与B表结构相同的表,同时添补一个自增ID字段,然后将B表中的记录全部追加到这个新表里,跟着我们就可以利用这个自增ID字段来解决问题了。下面是利用自增ID特性的解决方案 假设A,B表的关联...
mysql 关联查询求助
这个问题的难点在于如何找出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的方法暂时未能找到。
2014-01-07
select a.f1, b.f2, b.f3
from a join b on a.f1=b.f12014-01-07
group by 利用A表的主键分组就可以了2014-01-07