MariaDB DISTINCT
子句用于在SELECT
語句中從結(jié)果中刪除重復(fù)項(xiàng)。
語法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
注意:當(dāng)在
DISTINCT
子句中僅使用表達(dá)式時,查詢將返回該表達(dá)式的唯一值。當(dāng)您使用多個表達(dá)式在DISTINCT
子句時,查詢將返回多個表達(dá)式的唯一組合。DISTINCT
子句不會忽略NULL
值。因此,在SQL語句中使用DISTINCT
子句時,結(jié)果集將包含NULL
作為不同的值。
有一個名稱為students
的表,有一些重復(fù)的條目。例如,就有兩個學(xué)生的名字叫:Maxsu
。可以先來看看students
表的中的全部數(shù)據(jù)記錄。
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)
現(xiàn)在,使用DISTINCT
子句查詢?nèi)コ碇械闹貜?fù)項(xiàng)。參考以下語句 -
SELECT DISTINCT student_name FROM Students;
執(zhí)行上面語句,得到以下結(jié)果 -
MariaDB [testdb]> SELECT DISTINCT student_name FROM Students;
+--------------+
| student_name |
+--------------+
| Maxsu |
| JMaster |
| Mahesh |
| Kobe |
| Blaba |
+--------------+
5 rows in set (0.00 sec)
可以看到上面結(jié)果中,在使用DISTINCT
子句之后,重復(fù)的條目被刪除返回一次。即,名字為:Maxsu
的行記錄只有一條。
可以使用DISTINCT
子句從MariaDB中的多個表達(dá)式中刪除重復(fù)項(xiàng)。為了更容易說明問題,我們首先再向students
表中插入一些數(shù)據(jù)。
INSERT INTO students
(student_name, student_address, admission_date)
VALUES('Maxsu','Haikou','2015-11-17 00:00:00');
在執(zhí)行上面插入語句后,students
表中名字為:Maxsu
的學(xué)生一共有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)
假設(shè)查詢時,相同名字并且在同一個地址只顯示為一條,怎么做?參考以下查詢語句 -
SELECT DISTINCT student_name, student_address FROM Students;
執(zhí)行上面語句,得到以下結(jié)果 -
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)
從上面查詢的結(jié)果集中,可以看到當(dāng)前只顯示一條。即:student_name
為:Maxsu
以及student_address
為Haikou
的學(xué)生信息只有一條。