在 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.