在 MySQL 中实现 MAX(distinct…) 的方法是什么,不使用 DISTINCT 的话有什么不同?


让我们看一下第一个语法,即在 MAX() 中使用 DISTINCT −

select max(DISTINCT yourColumnName) from yourTableName;

第二个语法如下。它未使用 DISTINCT −

select max( yourColumnName) from yourTableName;

注意 − 无论是否使用 DISTINCT 关键字,上述两个查询给出的结果都是相同的。MySQL 会在内部将 MAX(yourColumnName) 转换为 DISTINCT 关键字。

现在让我们看一个示例并创建一个表 −

mysql> create table DemoTable
(
   Number int
);
Query OK, 0 rows affected (1.50 sec)

使用 insert 命令在表中插入一些记录 −

mysql> insert into DemoTable values(80);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(88);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(78);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(88);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(68);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(88);
Query OK, 1 row affected (0.10 sec)

使用 select 语句从表中显示所有记录 −

mysql> select *from DemoTable;

将生成以下输出 −

+--------+
| Number |
+--------+
|     80 |
|     88 |
|     78 |
|     88 |
|     68 |
|     88 |
+--------+
6 rows in set (0.00 sec)

情况 1 − 以下查询用于实现 MAX(DISTINCT..) −

mysql> select max(DISTINCT Number) from DemoTable;

将生成以下输出 −

+----------------------+
| max(DISTINCT Number) |
+----------------------+
|                   88 |
+----------------------+
1 row in set (0.00 sec)

情况 2 − 以下是不用 DISTINCT 实现 MAX() 的查询 −

mysql> select max(Number) from DemoTable;

将生成以下输出 −

+-------------+
| max(Number) |
+-------------+
|          88 |
+-------------+
1 row in set (0.07 sec)

如上所见,它们给出的结果相同。

更新时间:2019 年 10 月 3 日

3K+ 浏览量

开启您的 职业生涯

完成课程后获得认证

入门
广告
© . All rights reserved.