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

MySQL?去重實例操作詳解

 更新時間:2022年07月18日 08:20:51   作者:??Java中文社群?  
這篇文章主要介紹了MySQL?去重實例操作詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

前言

在 MySQL 中,最常見的去重方法有兩個:使用 distinct 或使用 group by,那它們有什么區(qū)別呢?接下來我們一起來看。

1.創(chuàng)建測試數(shù)據(jù)

最終展現(xiàn)效果如下: 

2.distinct 使用

distinct 基本語法如下:

SELECT DISTINCT column_name,column_name FROM table_name;

2.1 單列去重

我們先用 distinct 實現(xiàn)單列去重,根據(jù) aid(文章 ID)去重,具體實現(xiàn)如下: 

2.2 多列去重

除了單列去重之外,distinct 還支持多列(兩列及以上)去重,我們根據(jù) aid(文章 ID)和 uid(用戶 ID)聯(lián)合去重,具體實現(xiàn)如下: 

2.3 聚合函數(shù)+去重

使用 distinct + 聚合函數(shù)去重,計算 aid 去重之后的總條數(shù),具體實現(xiàn)如下: 

3.group by 使用

group by 基礎語法如下:

SELECT column_name,column_name FROM table_name 
WHERE column_name operator value 
GROUP BY column_name

3.1 單列去重

根據(jù) aid(文章 ID)去重,具體實現(xiàn)如下: 

 與 distinct 相比 group by 可以顯示更多的列,而 distinct 只能展示去重的列。

3.2 多列去重

根據(jù) aid(文章 ID)和 uid(用戶 ID)聯(lián)合去重,具體實現(xiàn)如下: 

3.3 聚合函數(shù) + group by

統(tǒng)計每個 aid 的總數(shù)量,SQL 實現(xiàn)如下: 

 從上述結果可以看出,使用 group by 和 distinct 加 count 的查詢語義是完全不同的,distinct + count 統(tǒng)計的是去重之后的總數(shù)量,而 group by + count 統(tǒng)計的是分組之后的每組數(shù)據(jù)的總數(shù)。

4.distinct 和 group by 的區(qū)別

官方文檔在描述 distinct 時提到:在大多數(shù)情況下 distinct 是特殊的 group by,如下圖所示: 

 官方文檔地址:但二者還是有一些細微的不同的,比如以下幾個。

區(qū)別1:查詢結果集不同

當使用 distinct 去重時,查詢結果集中只有去重列信息,如下圖所示: 

 當你試圖添加非去重字段(查詢)時,SQL 會報錯如下圖所示: 

 而使用 group by 排序可以查詢一個或多個字段,如下圖所示: 

區(qū)別2:使用業(yè)務場景不同

統(tǒng)計去重之后的總數(shù)量需要使用 distinct,而統(tǒng)計分組明細,或在分組明細的基礎上添加查詢條件時,就得使用 group by 了。

使用 distinct 統(tǒng)計某列去重之后的總數(shù)量: 

 統(tǒng)計分組之后數(shù)量大于 2 的文章,就要使用 group by 了,如下圖所示: 

區(qū)別3:性能不同

如果去重的字段有索引,那么 group by 和 distinct 都可以使用索引,此情況它們的性能是相同的;而當去重的字段沒有索引時,distinct 的性能就會高于 group by,因為在 MySQL 8.0 之前,group by 有一個隱藏的功能會進行默認的排序,這樣就會觸發(fā) filesort 從而導致查詢性能降低。

總結

大部分場景下 distinct 是特殊的 group by,但二者也有細微的區(qū)別,比如它們在查詢結果集上、使用的具體業(yè)務場景上,以及性能上都是不同的。

到此這篇關于MySQL 去重實例操作詳解的文章就介紹到這了,更多相關MySQL 去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL中因一個雙引號錯位引發(fā)的血案詳析

    MySQL中因一個雙引號錯位引發(fā)的血案詳析

    這篇文章主要給大家介紹了關于MySQL中因一個雙引號錯位引發(fā)的血案的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • MYSQL 刪除一個字段前判斷字段是否存在的辦法

    MYSQL 刪除一個字段前判斷字段是否存在的辦法

    這篇文章主要介紹了MYSQL 刪除一個字段前判斷字段是否存在的辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • MySQL索引查詢的具體使用

    MySQL索引查詢的具體使用

    本文主要介紹了MySQL索引查詢的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • centos下安裝mysql服務器的方法

    centos下安裝mysql服務器的方法

    本篇文章是對在centos下安裝mysql服務器的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Mysql清空表數(shù)據(jù)庫命令truncate和delete詳解

    Mysql清空表數(shù)據(jù)庫命令truncate和delete詳解

    這篇文章主要介紹了Mysql數(shù)據(jù)庫清空表truncate和delete的相關知識,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • mysql常用命令行操作語句

    mysql常用命令行操作語句

    MySQL很早以前只能采用DOS式界面,后來雖然硬件支持圖形界面(平常的軟件操作界面),但是命令行界面(就是DOS界面)以它 簡單,高效,方便 的特色而被保留下來。這就是用DOS界面的原因。
    2016-05-05
  • 淺析MySQL 鎖和事務

    淺析MySQL 鎖和事務

    這篇文章主要介紹了MySQL 鎖和事務的相關資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解決方法

    mysql Sort aborted: Out of sort memory, consider increasing

    這篇文章主要介紹了mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解決方法,需要的朋友可以參考下
    2016-05-05
  • 千萬級記錄的Discuz論壇導致MySQL CPU 100%的優(yōu)化筆記

    千萬級記錄的Discuz論壇導致MySQL CPU 100%的優(yōu)化筆記

    談到自己在解決一個擁有 60 萬條記錄的 MySQL 數(shù)據(jù)庫訪問時,導致 MySQL CPU 占用 100% 的經(jīng)過。在解決問題完成優(yōu)化(optimize)之后,我發(fā)現(xiàn) Discuz 論壇也存在這個問題,當時稍微提了一下
    2010-12-12
  • Mysql中強大的group?by語句解析

    Mysql中強大的group?by語句解析

    這篇文章主要介紹了Mysql中強大的group?by語句解析,GROUP?BY?語句根據(jù)一個或多個列對結果集進行分組。在分組的列上我們可以使用?COUNT,?SUM,?AVG,等函數(shù),需要的朋友可以參考下
    2023-07-07

最新評論

加查县| 大厂| 黔西县| 保亭| 新乡县| 屏东县| 克东县| 九江县| 清镇市| 西贡区| 清水河县| 红原县| 固始县| 新干县| 东乌珠穆沁旗| 牟定县| 镇康县| 汉中市| 夏河县| 永平县| 平安县| 芦溪县| 云龙县| 永修县| 墨竹工卡县| 吕梁市| 白水县| 宁晋县| 小金县| 乌恰县| 丹棱县| 海盐县| 石嘴山市| 济南市| 怀柔区| 临泽县| 辽中县| 固始县| 织金县| 囊谦县| 成安县|