mysql distinct用法是怎樣的呢?下面就讓我們一起來(lái)了解一下吧:
mysql中的distinct的主要作用其實(shí)就是對(duì)數(shù)據(jù)庫(kù)表中一個(gè)或是多個(gè)字段重復(fù)的數(shù)據(jù)進(jìn)行過(guò)濾,并且只會(huì)返回其中的一條數(shù)據(jù)給用戶,需要注意的是,distinct一般只能夠在select中使用。
distinct的使用語(yǔ)法:
select distinct expression[,expression...] from tables [where conditions]
說(shuō)明:
在使用distinct時(shí)還是有需要注意的地方的:
1、在對(duì)字段進(jìn)行去重的時(shí)候,需要保證distinct在所有字段的最前面。
2、若是distinct關(guān)鍵字后面有多個(gè)字段時(shí),就會(huì)對(duì)多個(gè)字段進(jìn)行組合去重,只有當(dāng)多個(gè)字段組合起來(lái)的值是相等的才能夠被去重。
此外,使用distinct進(jìn)行去重是有遵循一定原理的,其原理為通過(guò)先對(duì)要進(jìn)行去重的數(shù)據(jù)進(jìn)行分組操作,接著從分組后的每組數(shù)據(jù)中去一條返回給客戶端,不過(guò)在這個(gè)分組的過(guò)程中可能會(huì)出現(xiàn)兩種情況,即:
1、distinct所依賴的字段全部包含索引。
這個(gè)情況也就是mysql會(huì)直接通過(guò)操作索引對(duì)于滿足條件的數(shù)據(jù)進(jìn)行分組,再?gòu)姆纸M后的每組數(shù)據(jù)中去一條數(shù)據(jù)。
2、distinct所依賴的字段未全部包含索引。
這個(gè)情況是指由于索引不能滿足整個(gè)去重分組的過(guò)程,因此會(huì)需要用到臨時(shí)表,mysql首先就需要將滿足條件的數(shù)據(jù)放置到臨時(shí)表中,接著在臨時(shí)表中對(duì)于該部分?jǐn)?shù)據(jù)進(jìn)行分組,再?gòu)呐R時(shí)表中的每個(gè)分組的數(shù)據(jù)中去一條數(shù)據(jù),不過(guò)在臨時(shí)表中進(jìn)行分組的過(guò)程中是不會(huì)對(duì)數(shù)據(jù)進(jìn)行排序的。
以上就是小編的分享了,希望能夠幫助到大家。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com