我有一个表客户端和一个表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)')

10-04 16:18