我有一张表:
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
我想为每个id
获取最大topicId
的行,如下所示:
result
id | msg | topicId
5 | Dolor sit | 1
7 | response | 2
8 | asdf | 3
我的问题是我不知道如何查询我想要的结果。 我正在使用symfony 2.3和doctrine,所以如果你可以使用doctrine查询构建器代码来获得很好的答案:)
有任何想法有效地做到这一点吗?
答案 0 :(得分:2)
这是一种方法
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
答案 1 :(得分:2)
SELECT m1.*
FROM YourTable T1
LEFT JOIN YourTable T2 ON (T1.id= T2.id AND T1.TopicId < T2.TopicId)
WHERE T2.id IS NULL;