当前的表为 article,部分数据如下
id | user_id | cat_id | title |
---|---|---|---|
1 | 2 | 3 | aaaaa |
2 | 2 | 4 | aaaa |
3 | 3 | 4 | aaaaaa |
4 | 3 | 4 | aaaa |
5 | 4 | 5 | aaaa |
6 | 4 | 6 | aaa |
当前业务需要查询最新的N个帖子,但是N个帖子中同一个用户发的文章只显示一条最新的文章,使用以上数据查询的话会得到ID为: 6,4,2的帖子。
问题来了:这个SQL怎么写?
当前的表为 article,部分数据如下
id | user_id | cat_id | title |
---|---|---|---|
1 | 2 | 3 | aaaaa |
2 | 2 | 4 | aaaa |
3 | 3 | 4 | aaaaaa |
4 | 3 | 4 | aaaa |
5 | 4 | 5 | aaaa |
6 | 4 | 6 | aaa |
当前业务需要查询最新的N个帖子,但是N个帖子中同一个用户发的文章只显示一条最新的文章,使用以上数据查询的话会得到ID为: 6,4,2的帖子。
问题来了:这个SQL怎么写?
DEMO: http://sqlfiddle.com/#!2/1c794/1/0
SELECT MAX(id), user_id, cate_id, title FROM article GROUP BY user_id ORDER BY id
select * from (select * from article order by id desc) as a group by a.user_id order by a.id desc;
先用自查询对article进行一个排序,然后再用group by限定用户
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读
3 回答2k 阅读
不知道这个是不是你要的结果呢:SELECT max(id),title from test GROUP BY user_id
