我有一个表 client 和表 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)')
关于php - 学说左加入多对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30870665/