mysql分组后,取每组第一条数据
在工作中,有时候我们需要先group by之后,然后在获取group by之后的每组数据。这个时候sql怎么写呢?
在工作中,有时候我们需要先group by之后,然后在获取group by之后的每组数据。这个时候sql怎么写呢?
需求:

获取每本书的起始章节。比如:book_id为1的书籍的起始章节为:(1,2),book_id为2的起始章节为(1,3),这个时候怎么获取呢?
先看结论:
-- 倒叙 select * from (select distinct(a.id) tid, a.* from publish_book_chapter a where a.book_id in (1, 2) order by a.id desc) tt group by tt.book_id; -- 正序 select * from (select distinct(a.id) tid, a.* from publish_book_chapter a where a.book_id in (1, 2) order by a.id ) tt group by tt.book_id;
思路:先进行排序,然后再进行分组,获取每组的第一条。
Q: 为什么要写distinct(a.id)呢?
A
原创不易,完成人机校验,阅读全文