MariaDB DISTINCT子句用于在SELECT語句中從結(jié)果中刪除重復(fù)項。
語法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
注意:當(dāng)在
DISTINCT子句中僅使用表達式時,查詢將返回該表達式的唯一值。當(dāng)您使用多個表達式在DISTINCT子句時,查詢將返回多個表達式的唯一組合。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ù)項。參考以下語句 -
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中的多個表達式中刪除重復(fù)項。為了更容易說明問題,我們首先再向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é)生信息只有一條。