SQL中的DISTINCT簡介、SQL DISTINCT詳解 附DISTINCT的用法、DISTINCT注意事項(xiàng)
DISTINCT簡介:
DISTINCT 是 SQL 中用來返回唯一不重復(fù)結(jié)果集的關(guān)鍵字。它通常用于 SELECT 語句中,可以指定一個(gè)或多個(gè)列進(jìn)行去重,并返回唯一的結(jié)果。當(dāng)你在使用 SELECT 查詢數(shù)據(jù)時(shí),可能會(huì)得到包含重復(fù)行的結(jié)果集。為了去除這些重復(fù)行,你可以使用 DISTINCT 關(guān)鍵字來獲取唯一的記錄。
表中插入的原始數(shù)據(jù):

1、單列去重:單列去重:使用 DISTINCT 去重查詢結(jié)果中的單個(gè)列,返回唯一的值。
SELECT DISTINCT age FROM students

2、多列去重:使用 DISTINCT 去重查詢結(jié)果中的多個(gè)列,返回滿足多列組合唯一的結(jié)果。
SELECTDISTINCT NAME,age,score FROM students

3、結(jié)合其他關(guān)鍵字:DISTINCT 可以與其他 SQL 關(guān)鍵字結(jié)合使用,如 ORDER BY、WHERE 和 GROUP BY 等
SELECT DISTINCT NAME,age,score FROM students ORDER BY score DESC SELECT DISTINCT NAME ,age,score FROM students GROUP BY NAME


4、對(duì)表達(dá)式進(jìn)行去重:DISTINCT 還可以用于對(duì)表達(dá)式進(jìn)行去重,而不僅僅是列名。這允許你根據(jù)某些計(jì)算得到的結(jié)果進(jìn)行去重。
SELECT DISTINCT ( `name` + age) result FROM students
5、COUNT()統(tǒng)計(jì)
SELECT COUNT(DISTINCT NAME) num FROM students
注意事項(xiàng):
1、distinct 必須放在字段的開頭,即放在第一個(gè)參數(shù)的位置。
2、只能在select語句中使用,不能在insert、delete、update中使用。
3、distinct表示對(duì)后面的所有參數(shù)的拼接 取 不重復(fù)的記錄。
4、distinct 忽略 NULL 值:distinct 關(guān)鍵字默認(rèn)會(huì)忽略 NULL 值,即將 NULL 視為相同的值。如果你希望包括 NULL 值在去重結(jié)果中,可以使用 IS NULL 或 IS NOT NULL 進(jìn)行過濾。
5、DISTINCT 基于所有選擇的列:DISTINCT 關(guān)鍵字基于選擇的所有列來進(jìn)行去重。如果你只想根據(jù)部分列進(jìn)行去重,可以使用子查詢或者窗口函數(shù)等技術(shù)來實(shí)現(xiàn)。
6、DISTINCT 的性能消耗:DISTINCT 操作可能會(huì)對(duì)查詢的性能產(chǎn)生一定的影響,特別是在處理大量數(shù)據(jù)時(shí)。因?yàn)樗枰獙?duì)結(jié)果集進(jìn)行排序和比較以去除重復(fù)行。如果性能是一個(gè)關(guān)鍵問題,可以考慮其他優(yōu)化方法,例如使用索引或者合理設(shè)計(jì)查詢。
7、結(jié)果集順序不保證:使用 DISTINCT 關(guān)鍵字后,結(jié)果集的順序可能會(huì)發(fā)生變化,因?yàn)閿?shù)據(jù)庫系統(tǒng)通常會(huì)對(duì)結(jié)果進(jìn)行重新排列以去除重復(fù)行。如果需要特定的結(jié)果排序,可以使用 ORDER BY 子句進(jìn)行排序。
完整版代碼
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(50),
age INT,
score DECIMAL(5, 2)
);
INSERT INTO students (NAME, age, score) VALUES
('Alice', 20, 85.5),
('Bob', 22, 76.3),
('Charlie', 21, 92.0),
('Alice', 20, 85.5),
('David', 23, 68.9);
# 原始數(shù)據(jù)
SELECT * FROM students
# 單列去重:使用 DISTINCT 去重查詢結(jié)果中的單個(gè)列,返回唯一的值。
SELECT DISTINCT age FROM students
# 多列去重:使用 DISTINCT 去重查詢結(jié)果中的多個(gè)列,返回滿足多列組合唯一的結(jié)果。
SELECT DISTINCT NAME,age,score FROM students
# 結(jié)合其他關(guān)鍵字:DISTINCT 可以與其他 SQL 關(guān)鍵字結(jié)合使用,如 ORDER BY、WHERE 和 GROUP BY 等
SELECT DISTINCT NAME,age,score FROM students ORDER BY score DESC
SELECT DISTINCT NAME ,age,score FROM students GROUP BY NAME
# 對(duì)表達(dá)式進(jìn)行去重:DISTINCT 還可以用于對(duì)表達(dá)式進(jìn)行去重,而不僅僅是列名。這允許你根據(jù)某些計(jì)算得到的結(jié)果進(jìn)行去重。
SELECT DISTINCT ( `name` + age) result FROM students
# COUNT()統(tǒng)計(jì)
SELECT COUNT(DISTINCT NAME) num FROM students到此這篇關(guān)于SQL中的DISTINCT簡介、SQL DISTINCT詳解 附DISTINCT的用法、DISTINCT注意事項(xiàng)的文章就介紹到這了,更多相關(guān)sql distinct用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
獲取SQL Server數(shù)據(jù)庫元數(shù)據(jù)的幾種方法
這篇文章主要介紹了獲取SQL Server數(shù)據(jù)庫元數(shù)據(jù)的幾種方法 ,需要的朋友可以參考下2015-08-08
SQL Server Management Studio(SSMS)無法連接到服務(wù)器的解決
文章介紹了如何解決在使用SSMS(SQL Server Management Studio)連接服務(wù)器時(shí)出現(xiàn)“無法連接到服務(wù)器”的問題,首先,需要找到SQL Server配置管理器并啟動(dòng)SQL Server服務(wù),如果希望服務(wù)器在開機(jī)時(shí)自動(dòng)啟動(dòng),可以將啟動(dòng)模式改為“自動(dòng)”2026-02-02
SQL SERVER修改函數(shù)名容易引發(fā)的問題分析
這篇文章主要介紹了SQL SERVER修改函數(shù)名容易引發(fā)的問題分析的相關(guān)資料,需要的朋友可以參考下2016-02-02

