我有一个表客户端和一个表client_evolution,具有OneToMany关系。在client_evolution表中,我有3个用于当前客户端的条目。使用Left Join获取数据我总是从client_evolution获得ID最小的第一个条目,我需要的是最新行。我尝试进行子选择,但是没有用。
->addSelect('(
SELECT ce.id
FROM ClientEvolution cev
WHERE cev.client = c.id
GROUP BY cev.client
ORDER BY cev.id DESC) AS cevol')
我需要此表中的多个字段。
请帮忙。
最佳答案
GROUP BY就是为什么每个客户端仅获得一个条目以及SELECT缺少客户端表的原因。这将按照客户端ID的顺序为您提供两个表之间的所有字段。要仅获取每个客户ID的最新行,请查看MySQL Group By to display latest result
->addSelect('(
SELECT *
FROM ClientEvolution cev, Client c
WHERE cev.client = c.id
ORDER BY cev.client, cev.id DESC)')