获取MySQL中JOIN的最后记录

时间:2015-12-05 06:55:19

标签: mysql left-join outer-join

我有2个表A,B,其中B包含A的外键

ida,cola1
idb,fka,colb1

对于来自A的每条记录,我只需要获得LEFT OUTER JOIN的最后一个结果。以下查询显示所有JOIN,如何将其限制为最后一次出现的fka?

SELECT ida,idb,cola1,colb1 FROM a LEFT OUTER JOIN b ON ida=fka

3 个答案:

答案 0 :(得分:0)

SELECT 
    ida,idb,cola1,colb1 
FROM a 
LEFT OUTER JOIN b ON ida=fka 
ORDER BY ida DESC LIMIT 1

可能这个人会帮助你。

答案 1 :(得分:0)

您可以使用group by从表B中删除所有其他列 然后加入表A以获得结果
Group by需要aggregate function minmax

我在这里尝试了min

SELECT 
    ida, idb, cola1, colb1 
FROM A LEFT OUTER JOIN (
    select 
        min(idb) idb, fka, min(colb1) colb1
    from B
    group by fka
) b
ON ida = fka

答案 2 :(得分:0)

如果表b中的最后一个结果是具有最高idb的结果,那么一个解决方案是使用子查询来计算每个fka的max(idb):

select
  a.ida,
  a.cola1,
  b.idb,
  b.fka,
  b.colb1
from
  a left outer join (
    select fka, max(idb) as max_idb
    from b
    group by fka
  ) max_b on a.ida=max_b.fka
  left outer join b on max_b.fka=b.fka and max_b.max_idb=b.idb