最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析mysql中distinct的用法

 更新時(shí)間:2025年09月15日 14:33:59   作者:有夢(mèng)想的攻城獅  
本文深入解析了MySQL中DISTINCT關(guān)鍵字的功能,包括其作用、原理及使用方法,DISTINCT用于去除重復(fù)記錄,提高數(shù)據(jù)查詢效率,文章通過(guò)實(shí)例展示了如何對(duì)單個(gè)或多個(gè)字段進(jìn)行去重,并結(jié)合COUNT函數(shù)使用,感興趣的朋友跟隨小編一起看看吧

DISTINCT簡(jiǎn)介

DISTINCT 的作用是消除結(jié)果集中的重復(fù)行,語(yǔ)法如下:

SELECT DISTINCT
    columns
FROM
    table_name
WHERE
    where_conditions; 

mysql中的distinct的用法

distinct的作用

在mysql中,distinct關(guān)鍵字的主要作用就是對(duì)數(shù)據(jù)庫(kù)表中一個(gè)或者多個(gè)字段重復(fù)的數(shù)據(jù)進(jìn)行過(guò)濾,只返回其中的一條數(shù)據(jù)給用戶,distinct只可以在select中使用

distinct的原理

distinct進(jìn)行去重的主要原理是通過(guò)先對(duì)要進(jìn)行去重的數(shù)據(jù)進(jìn)行分組操作,然后從分組后的每組數(shù)據(jù)中去一條返回給客戶端,在這個(gè)分組的過(guò)程可能會(huì)出現(xiàn)兩種不同的情況:

  • distinct 依賴的字段全部包含索引:
  • 該情況mysql直接通過(guò)操作索引對(duì)滿足條件的數(shù)據(jù)進(jìn)行分組,然后從分組后的每組數(shù)據(jù)中去一條數(shù)據(jù)。
  • distinct 依賴的字段未全部包含索引:
  • 該情況由于索引不能滿足整個(gè)去重分組的過(guò)程,所以需要用到臨時(shí)表,mysql首先需要將滿足條件的數(shù)據(jù)放到臨時(shí)表中,然后在臨時(shí)表中對(duì)該部分?jǐn)?shù)據(jù)進(jìn)行分組,然后從臨時(shí)表中每個(gè)分組的數(shù)據(jù)中去一條數(shù)據(jù),在臨時(shí)表中進(jìn)行分組的過(guò)程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行排序。

distinct的用法

distinct的使用語(yǔ)法是這樣的:

select distinct expression[,expression...] from tables [where conditions];

在使用distinct的過(guò)程中主要注意一下幾點(diǎn):

  • 在對(duì)字段進(jìn)行去重的時(shí)候,要保證distinct在所有字段的最前面
  • 如果distinct關(guān)鍵字后面有多個(gè)字段時(shí),則會(huì)對(duì)多個(gè)字段進(jìn)行組合去重,只有多個(gè)字段組合起來(lái)的值是相等的才會(huì)被去重

下面我們通過(guò)在開(kāi)發(fā)過(guò)程中經(jīng)常遇到的一些關(guān)于distinct的實(shí)例來(lái)加深大家對(duì)該關(guān)鍵字用法的理解:

數(shù)據(jù)庫(kù)表結(jié)構(gòu)和數(shù)據(jù)如下圖所示:

  • 對(duì)單個(gè)字段進(jìn)行去重sql:
select distinct  age from user;
查詢結(jié)果
age
10
20
30
  • 對(duì)多個(gè)字段進(jìn)行去重sql:
select distinct name,age from user;
查詢結(jié)果
name	age
One	10
Zero	20
Two	20
Four	30
One	30
  • 對(duì)多個(gè)字段進(jìn)行去重并求count的sql:
select count(distinct name,age) as total from user;
查詢結(jié)果
total
5
  • 對(duì)select * 進(jìn)行去重
select distinct * from user;
由于 * 代表所有字段,所以該sql和 select distinct id,name,age,sign from user 語(yǔ)義相同
查詢結(jié)果:
id		name	age		sign
1		One		10		夢(mèng)想要有的,萬(wàn)一實(shí)現(xiàn)了呢
2		Zero	20		http://www.chaoshizhushou.com
3		Two		20		OneZeroTwoFour
4		Four	30		加油
5		One		30		學(xué)習(xí)才是硬道理
6		Four	30		一日三省吾身

到此這篇關(guān)于mysql中的distinct的用法的文章就介紹到這了,更多相關(guān)mysql distinct用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL分支和循環(huán)結(jié)構(gòu)方式

    MySQL分支和循環(huán)結(jié)構(gòu)方式

    在MySQL中,IF函數(shù)用于根據(jù)條件返回不同的值,類似于Java的三目運(yùn)算符,CASE語(yǔ)句則提供了兩種形式:簡(jiǎn)單CASE函數(shù)和搜索CASE函數(shù),分別類似于Java中的switch-case結(jié)構(gòu)和多重if判斷,這些控制流函數(shù)在數(shù)據(jù)庫(kù)查詢和數(shù)據(jù)處理中非常有用,可以實(shí)現(xiàn)復(fù)雜的邏輯判斷
    2024-10-10
  • Linux中部署MySQL環(huán)境的四種方式圖文詳解

    Linux中部署MySQL環(huán)境的四種方式圖文詳解

    這篇文章主要介紹了Linux中部署MySQL環(huán)境的四種方式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • 在MySQL中用正則表達(dá)式替換數(shù)據(jù)庫(kù)中的內(nèi)容的方法

    在MySQL中用正則表達(dá)式替換數(shù)據(jù)庫(kù)中的內(nèi)容的方法

    在MySQL中用正則表達(dá)式替換數(shù)據(jù)庫(kù)中的內(nèi)容的方法...
    2007-03-03
  • MySQL多表聯(lián)查的實(shí)現(xiàn)思路

    MySQL多表聯(lián)查的實(shí)現(xiàn)思路

    數(shù)據(jù)庫(kù)應(yīng)用在我們的生活中是很常見(jiàn)的,在編輯一些應(yīng)用以及軟件的時(shí)候都需要用到數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MongoDB中實(shí)現(xiàn)多表聯(lián)查的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 常見(jiàn)php與mysql中文亂碼問(wèn)題解決辦法

    常見(jiàn)php與mysql中文亂碼問(wèn)題解決辦法

    MySQL對(duì)中文的支持程度還是很有限的,尤其是新手,但凡出現(xiàn)亂碼問(wèn)題,就會(huì)頭大。
    2014-09-09
  • Mysql如何將數(shù)據(jù)按照年月分組的統(tǒng)計(jì)

    Mysql如何將數(shù)據(jù)按照年月分組的統(tǒng)計(jì)

    這篇文章主要介紹了Mysql如何將數(shù)據(jù)按照年月分組的統(tǒng)計(jì)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MySQL分頁(yè)優(yōu)化

    MySQL分頁(yè)優(yōu)化

    這篇文章主要為大家詳細(xì)介紹了MySQL分頁(yè)優(yōu)化,內(nèi)容思路很詳細(xì),有意對(duì)MySQL分頁(yè)優(yōu)化的朋友可以參考一下
    2016-04-04
  • mysql查看binlog日志的配置方法

    mysql查看binlog日志的配置方法

    文章介紹了如何配置和查看MySQL 8.0的binlog日志,包括開(kāi)啟binlog、查看當(dāng)前日志位置、查看日志目錄和信息,以及使用mysqlbinlog工具查看和分析binlog日志,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • SQL通用語(yǔ)法以及分類圖文詳解

    SQL通用語(yǔ)法以及分類圖文詳解

    本書(shū)從初學(xué)者的角度出發(fā),由淺入深,循序漸進(jìn)地介紹了SQL通用語(yǔ)法的相關(guān)知識(shí),下面這篇文章主要給大家介紹了關(guān)于SQL通用語(yǔ)法以及分類的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • MySQL 8.0 之索引跳躍掃描(Index Skip Scan)

    MySQL 8.0 之索引跳躍掃描(Index Skip Scan)

    這篇文章主要介紹了MySQL 8.0 之索引跳躍掃描(Index Skip Scan)的相關(guān)資料,幫助大家學(xué)習(xí)MySQL8.0的新特性,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

固安县| 阳东县| 公主岭市| 吉安县| 邮箱| 行唐县| 鹿邑县| 鄱阳县| 娄底市| 金寨县| 克东县| 清水县| 宿州市| 六枝特区| 阿克苏市| 前郭尔| 广平县| 南陵县| 普格县| 丰县| 德昌县| 临夏市| 肥城市| 淮滨县| 尉氏县| 商洛市| 英超| 龙口市| 阳高县| 涟源市| 乃东县| 夏邑县| 金湖县| 聊城市| 武义县| 青州市| 中牟县| 扎鲁特旗| 西盟| 利川市| 闻喜县|