MySQL如何在每个分组中选择第一行?

MySQL如何在每个分组中选择第一行?

在MySQL中,当我们需要在每个分组中从一组数据中选择第一行时,可以使用以下方法:

SELECT *
FROM table_name
WHERE (column_name_1, column_name_2) IN
  (SELECT column_name_1, MIN(column_name_2)
   FROM table_name
   GROUP BY column_name_1);

在这个查询语句中,我们首先使用子查询来识别每个分组的第一行。 然后将这些行与原始表中的数据进行比较,从而得到我们要选择的数据。

例如,我们有以下表:

id category value
1 A 10
2 A 20
3 B 30
4 B 40
5 B 50

现在,我们需要从每个类别中选择第一行。 我们可以使用上述查询语句来完成此操作:

SELECT *
FROM table_name
WHERE (category, value) IN
  (SELECT category, MIN(value)
   FROM table_name
   GROUP BY category);

此查询将返回以下结果:

id category value
1 A 10
3 B 30

这是我们想要的结果:每个类别中的第一行。

阅读更多:MySQL 教程

总结

在MySQL中,我们可以使用子查询和WHERE语句来选择每个分组(即每个类别)中的第一行。 通过对子查询的使用,我们可以从原始表中获取所需数据,从而更好地满足我们的需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程