MySQL分组后取每组第一条的方法
使用DISTINCT和GROUP BY
除了使用子查询外,我们还可以通过结合DISTINCT和GROUP BY的方式实现分组后取每组第一条记录。具体的操作步骤如下:
使用GROUP BY子句按照指定字段进行分组。
在SELECT语句中使用DISTINCT关键字,保留每组中的第一条记录。
SELECT DISTINCT group_field, column1, column2, ...
FROM your_table
GROUP BY group_field;
上述代码中,your_table是需要查询的表名,group_field是按照哪个字段进行分组,column1, column2, …是需要查询的字段名。通过GROUP BY子句按照指定字段进行分组,并在SELECT语句中使用DISTINCT关键字,保留每组中的第一条记录。需要注意的是,除了分组字段外,还需要列出其他需要查询的字段。
举例
SELECT
*
FROM
(
SELECT DISTINCT
tas.article_id,
tas.journal_id,
tasi.if_oa,
tasi.article_no,
tasi.doi,
tasi.title,
tas.themselve_no,
tas.release_stage,
tas.release_status
FROM
t_article_stage tas
LEFT JOIN t_article_stage_info tasi ON tas.id = tasi.stage_id
WHERE
tas.release_status IN ( 0, 1, 2 )
AND tasi.article_no = 'test2023082401'
ORDER BY
release_stage DESC
) t
GROUP BY
t.article_id```