MariaDB Distinct子句
MariaDB DISTINCT
子句用於在SELECT
語句中從結果中刪除重複項。
語法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
注意:當在
DISTINCT
子句中僅使用表達式時,查詢將返回該表達式的唯一值。當您使用多個表達式在DISTINCT
子句時,查詢將返回多個表達式的唯一組合。DISTINCT
子句不會忽略NULL
值。因此,在SQL語句中使用DISTINCT
子句時,結果集將包含NULL
作爲不同的值。
1. 使用單一表達式示例
有一個名稱爲students
的表,有一些重複的條目。例如,就有兩個學生的名字叫:Maxsu
。可以先來看看students
表的中的全部數據記錄。
MariaDB [testdb]> select * from students;
+------------+--------------+-----------------+----------------+
| student_id | student_name | student_address | admission_date |
+------------+--------------+-----------------+----------------+
| 1 | Maxsu | Haikou | 2017-01-07 |
| 3 | JMaster | Beijing | 2016-05-07 |
| 4 | Mahesh | Guangzhou | 2016-06-07 |
| 5 | Kobe | Shanghai | 2016-02-07 |
| 6 | Blaba | Shengzhen | 2016-08-07 |
| 7 | Maxsu | Sanya | 2017-08-08 |
+------------+--------------+-----------------+----------------+
6 rows in set (0.00 sec)
現在,使用DISTINCT
子句查詢去除表中的重複項。參考以下語句 -
SELECT DISTINCT student_name FROM Students;
執行上面語句,得到以下結果 -
MariaDB [testdb]> SELECT DISTINCT student_name FROM Students;
+--------------+
| student_name |
+--------------+
| Maxsu |
| JMaster |
| Mahesh |
| Kobe |
| Blaba |
+--------------+
5 rows in set (0.00 sec)
可以看到上面結果中,在使用DISTINCT
子句之後,重複的條目被刪除返回一次。即,名字爲:Maxsu
的行記錄只有一條。
2. 使用多個表達式
可以使用DISTINCT
子句從MariaDB中的多個表達式中刪除重複項。爲了更容易說明問題,我們首先再向students
表中插入一些數據。
INSERT INTO students
(student_name, student_address, admission_date)
VALUES('Maxsu','Haikou','2015-11-17 00:00:00');
在執行上面插入語句後,students
表中名字爲:Maxsu
的學生一共有3
有三位,兩位的地址在:Haikou
,一位的地址在:Sanya
,如下所示 -
MariaDB [testdb]> select * from students;
+------------+--------------+-----------------+----------------+
| student_id | student_name | student_address | admission_date |
+------------+--------------+-----------------+----------------+
| 1 | Maxsu | Haikou | 2017-01-07 |
| 3 | JMaster | Beijing | 2016-05-07 |
| 4 | Mahesh | Guangzhou | 2016-06-07 |
| 5 | Kobe | Shanghai | 2016-02-07 |
| 6 | Blaba | Shengzhen | 2016-08-07 |
| 7 | Maxsu | Sanya | 2017-08-08 |
| 8 | Maxsu | Haikou | 2015-11-17 |
+------------+--------------+-----------------+----------------+
7 rows in set (0.00 sec)
假設查詢時,相同名字並且在同一個地址只顯示爲一條,怎麼做?參考以下查詢語句 -
SELECT DISTINCT student_name, student_address FROM Students;
執行上面語句,得到以下結果 -
MariaDB [testdb]> SELECT DISTINCT student_name,student_address FROM Students;
+--------------+-----------------+
| student_name | student_address |
+--------------+-----------------+
| Maxsu | Haikou |
| JMaster | Beijing |
| Mahesh | Guangzhou |
| Kobe | Shanghai |
| Blaba | Shengzhen |
| Maxsu | Sanya |
+--------------+-----------------+
6 rows in set (0.00 sec)
從上面查詢的結果集中,可以看到當前只顯示一條。即:student_name
爲:Maxsu
以及student_address
爲Haikou
的學生信息只有一條。