MySQL:按唯一值的第一次出现选择行

MySQL:按唯一值的第一次出现选择行

在MySQL中,我们可以使用DISTINCT和GROUP BY关键字来选择唯一值,但是如果我们想只选择唯一值的第一次出现的行呢?在本文中,我们将介绍如何使用MySQL来执行此操作。

阅读更多:MySQL 教程

先决条件

要执行本文中的查询,您需要使用MySQL数据库,如果您还没有安装MySQL,请先安装它。安装后,您需要创建一个包含数据的表来执行查询。

示例表

本文使用以下示例表:

+----+---------+
| id | color   |
+----+---------+
| 1  | Red     |
| 2  | Blue    |
| 3  | Red     |
| 4  | Green   |
| 5  | Blue    |
| 6  | Yellow  |
| 7  | Red     |
| 8  | Green   |
| 9  | Yellow  |
| 10 | Purple  |
+----+---------+

使用子查询

要选择唯一值的第一次出现的行,可以使用子查询。 子查询被用作内部查询和主查询之间的条件。 在这里,我们将使用子查询来选择每种颜色的第一行:

SELECT *
FROM colors
WHERE id IN (SELECT MIN(id) FROM colors GROUP BY color);

输出:

+----+--------+
| id | color  |
+----+--------+
| 1  | Red    |
| 2  | Blue   |
| 4  | Green  |
| 6  | Yellow |
| 10 | Purple |
+----+--------+

您可以看到,此查询仅选择每种颜色的第一行(具有最小id值的行)。 子查询在选择每种颜色的第一行时起作用。

使用DISTINCT

另一种选择唯一值的第一次出现的行的方法是使用DISTINCT关键字。我们将DISTINCT用于颜色列,并使用ORDER BY对ID进行排序。 按照此顺序,我们可以使用GROUP BY来选择第一个出现的每种颜色的行:

SELECT DISTINCT color, MIN(id)
FROM colors
GROUP BY color;

输出:

+--------+--------+
| color  | MIN(id) |
+--------+--------+
| Blue   |      2 |
| Green  |      4 |
| Purple |     10 |
| Red    |      1 |
| Yellow |      6 |
+--------+--------+

总结

以上就是使用MySQL选择唯一值第一次出现的行的两种方法。通过使用子查询或DISTINCT,我们可以轻松找到每种唯一值的第一行。 希望这篇文章对您有所帮助!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程