MariaDB DISTINCT子句用于在SELECT語句中從結(jié)果中刪除重復(fù)項(xiàng)。
語法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
注意:當(dāng)在
DISTINCT子句中僅使用表達(dá)式時(shí),查詢將返回該表達(dá)式的唯一值。當(dāng)您使用多個(gè)表達(dá)式在DISTINCT子句時(shí),查詢將返回多個(gè)表達(dá)式的唯一組合。DISTINCT子句不會(huì)忽略NULL值。因此,在SQL語句中使用DISTINCT子句時(shí),結(jié)果集將包含NULL作為不同的值。
有一個(gè)名稱為students的表,有一些重復(fù)的條目。例如,就有兩個(gè)學(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中的多個(gè)表達(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è)查詢時(shí),相同名字并且在同一個(gè)地址只顯示為一條,怎么做?參考以下查詢語句 -
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é)生信息只有一條。