鍍金池/ 教程/ 數(shù)據(jù)庫/ MariaDB Distinct子句
MariaDB比較運(yùn)算符
MariaDB查詢數(shù)據(jù)
MariaDB Like子句
MariaDB Sum()函數(shù)
MariaDB過程
MariaDB限制返回記錄
MariaDB Count()函數(shù)
MariaDB更新數(shù)據(jù)
MariaDB導(dǎo)出數(shù)據(jù)
MariaDB Intersect運(yùn)算符
MariaDB函數(shù)
MariaDB Min()函數(shù)
MariaDB創(chuàng)建數(shù)據(jù)庫
MariaDB Avg()函數(shù)
MariaDB刪除數(shù)據(jù)
MariaDB條件
MariaDB功能特點(diǎn)
MariaDB創(chuàng)建表
MariaDB左外連接
MariaDB Union運(yùn)算符
MariaDB安裝
MariaDB選擇數(shù)據(jù)庫
MariaDB Max()函數(shù)
MariaDB Where子句
MariaDB右外連接
MariaDB內(nèi)連接
MariaDB截斷表
MariaDB Order By子句
MariaDB教程
MariaDB正則表達(dá)式
MariaDB Union All運(yùn)算符
MariaDB Distinct子句
MariaDB修改表
MariaDB刪除表
MariaDB插入數(shù)據(jù)
MariaDB From子句
MariaDB刪除數(shù)據(jù)庫
MariaDB簡介
MariaDB數(shù)據(jù)類型

MariaDB Distinct子句

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作為不同的值。

1. 使用單一表達(dá)式示例

有一個名稱為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的行記錄只有一條。

2. 使用多個表達(dá)式

可以使用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_addressHaikou的學(xué)生信息只有一條。