我有一个这个表:
posts
id | msg | topicId
1 | Hello World| 1
2 | Whats up? | 2
3 | lorem ipsum| 1
4 | new Topic | 3
5 | Dolor sit | 1
6 | some text | 3
7 | response | 2
8 | asdf | 3
我想得到每个topicId
具有最大id
的行,如下所示:
result
id | msg | topicId
5 | Dolor sit | 1
7 | response | 2
8 | asdf | 3
我的问题是我不知道如何查询我想要的结果。我使用的是symfony 2.3和条令,所以如果你能使用条令查询生成器代码来获得答案,那就太好了:)
有什么有效的方法吗?
SELECT m1.*
FROM YourTable T1
LEFT JOIN YourTable T2 ON (T1.id= T2.id AND T1.TopicId < T2.TopicId)
WHERE T2.id IS NULL;
这是的一种方式
SELECT
posts.*
FROM
posts
JOIN (
SELECT MAX(id) AS id ,`msg` , topicId
FROM posts
GROUP BY `topicId`
) maxid
ON posts.`topicId` = maxid.`topicId`
AND posts.id = maxid.id
演示此处