如何在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
);

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

mysql> insert into DemoTable values(80);
mysql> insert into DemoTable values(88);
mysql> insert into DemoTable values(78);
mysql> insert into DemoTable values(88);
mysql> insert into DemoTable values(68);
mysql> insert into DemoTable values(88);

使用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-以下是MAX()无需DISTINCT实现的查询-

mysql> select max(Number) from DemoTable;

这将产生以下输出-

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

如您在上面所看到的,它们两个都给出相同的结果。

猜你喜欢