SQL中的DISTINCT簡介、SQL DISTINCT詳解 附DISTINCT的用法、DISTINCT注意事項
DISTINCT簡介:
DISTINCT 是 SQL 中用來返回唯一不重復(fù)結(jié)果集的關(guān)鍵字。它通常用于 SELECT 語句中,可以指定一個或多個列進行去重,并返回唯一的結(jié)果。當你在使用 SELECT 查詢數(shù)據(jù)時,可能會得到包含重復(fù)行的結(jié)果集。為了去除這些重復(fù)行,你可以使用 DISTINCT 關(guān)鍵字來獲取唯一的記錄。
表中插入的原始數(shù)據(jù):
1、單列去重:單列去重:使用 DISTINCT 去重查詢結(jié)果中的單個列,返回唯一的值。
SELECT DISTINCT age FROM students
2、多列去重:使用 DISTINCT 去重查詢結(jié)果中的多個列,返回滿足多列組合唯一的結(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、對表達式進行去重:DISTINCT 還可以用于對表達式進行去重,而不僅僅是列名。這允許你根據(jù)某些計算得到的結(jié)果進行去重。
SELECT DISTINCT ( `name` + age) result FROM students
5、COUNT()統(tǒng)計
SELECT COUNT(DISTINCT NAME) num FROM students
注意事項:
1、distinct 必須放在字段的開頭,即放在第一個參數(shù)的位置。
2、只能在select語句中使用,不能在insert、delete、update中使用。
3、distinct表示對后面的所有參數(shù)的拼接 取 不重復(fù)的記錄。
4、distinct 忽略 NULL 值:distinct 關(guān)鍵字默認會忽略 NULL 值,即將 NULL 視為相同的值。如果你希望包括 NULL 值在去重結(jié)果中,可以使用 IS NULL 或 IS NOT NULL 進行過濾。
5、DISTINCT 基于所有選擇的列:DISTINCT 關(guān)鍵字基于選擇的所有列來進行去重。如果你只想根據(jù)部分列進行去重,可以使用子查詢或者窗口函數(shù)等技術(shù)來實現(xiàn)。
6、DISTINCT 的性能消耗:DISTINCT 操作可能會對查詢的性能產(chǎn)生一定的影響,特別是在處理大量數(shù)據(jù)時。因為它需要對結(jié)果集進行排序和比較以去除重復(fù)行。如果性能是一個關(guān)鍵問題,可以考慮其他優(yōu)化方法,例如使用索引或者合理設(shè)計查詢。
7、結(jié)果集順序不保證:使用 DISTINCT 關(guān)鍵字后,結(jié)果集的順序可能會發(fā)生變化,因為數(shù)據(jù)庫系統(tǒng)通常會對結(jié)果進行重新排列以去除重復(fù)行。如果需要特定的結(jié)果排序,可以使用 ORDER BY 子句進行排序。
完整版代碼
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é)果中的單個列,返回唯一的值。 SELECT DISTINCT age FROM students # 多列去重:使用 DISTINCT 去重查詢結(jié)果中的多個列,返回滿足多列組合唯一的結(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 # 對表達式進行去重:DISTINCT 還可以用于對表達式進行去重,而不僅僅是列名。這允許你根據(jù)某些計算得到的結(jié)果進行去重。 SELECT DISTINCT ( `name` + age) result FROM students # COUNT()統(tǒng)計 SELECT COUNT(DISTINCT NAME) num FROM students
到此這篇關(guān)于SQL中的DISTINCT簡介、SQL DISTINCT詳解 附DISTINCT的用法、DISTINCT注意事項的文章就介紹到這了,更多相關(guān)sql distinct用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL(MSSQLSERVER)服務(wù)啟動錯誤代碼3414的解決方法
這篇文章主要介紹了SQL(MSSQLSERVER)服務(wù)啟動錯誤代碼3414的解決方法,需要的朋友可以參考下2016-03-03SQL Server中的數(shù)據(jù)類型Text與varchar(max)有什么區(qū)別?
在SQL Server中,處理文本數(shù)據(jù)時,我們經(jīng)常會遇到兩種數(shù)據(jù)類型:Text和varchar(max),盡管它們都可以用來存儲大量的文本數(shù)據(jù),如果可能的話,考慮將Text數(shù)據(jù)類型遷移到varchar(max)或nvarchar(max)數(shù)據(jù)類型,以利用新功能和潛在的性能優(yōu)勢2025-03-03Sqlserver創(chuàng)建用戶并授權(quán)的實現(xiàn)步驟
這篇文章主要介紹了Sqlserver創(chuàng)建用戶并授權(quán)的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04MSSQL 監(jiān)控數(shù)據(jù)/日志文件增長實現(xiàn)方法
今天就想實現(xiàn)這么一個功能,每天(頻率可以調(diào)整)去收集一下數(shù)據(jù)文件的信息,放到一個表里面,這樣方便我們分析數(shù)據(jù)文件的增長演變例程,甚至你可以將數(shù)據(jù)文件的增長幅度和業(yè)務(wù)變化關(guān)聯(lián)起來分析2013-08-08SQLServer中Partition By及row_number 函數(shù)使用詳解
partition by關(guān)鍵字是分析性函數(shù)的一部分,partition by用于給結(jié)果集分組,如果沒有指定那么它把整個結(jié)果集作為一個分組,本文給大家介紹SQLServer中Partition By及row_number 函數(shù)使用詳解,需要的朋友參考下2015-11-11