欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中去重處理的方法小結(jié)

 更新時間:2024年11月22日 09:59:15   作者:安靜的_顯眼包O_o  
本文主要介紹了MySQL中去重方法小結(jié),包含DISTINCT、GROUPBY、聚合函數(shù)、子查詢、臨時表、窗口函數(shù)、GROUP_CONCAT這些方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在MySQL中,去重通常指的是從查詢結(jié)果中刪除重復(fù)的行。這可以通過多種方式實現(xiàn),具體取決于你的需求。以下是一些常見的去重方法:

1. DISTINCT 關(guān)鍵字:

如果你只是想簡單地去重,不關(guān)心分組,那么使用 DISTINCT 可能更合適:
使用 DISTINCT 關(guān)鍵字可以返回唯一不同的值。

SELECT DISTINCT name  FROM employees;

這個查詢會返回所有不重復(fù)的員工姓名。

SELECT DISTINCT column_name FROM table_name;

2. GROUP BY 子句:

使用 GROUP BY 子句可以對結(jié)果集進行分組,每個組只返回一條記錄。

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name;
SELECT department_id, name
FROM employees
GROUP BY department_id, name;

這個查詢會返回每個部門的唯一員工姓名,但請注意,如果部門中有多個人同名,他們都會被列出。

4. 結(jié)合 GROUP BY 和 DISTINCT

如果你想先對某個字段進行分組,然后在分組內(nèi)去重,你可以這樣做:

SELECT department_id, DISTINCT name
FROM employees
GROUP BY department_id;

但是,這個查詢在大多數(shù)SQL數(shù)據(jù)庫中是無效的,因為 DISTINCT 應(yīng)該作用于整個 SELECT 列表,而不是單獨的列。

3. 聚合函數(shù):

使用聚合函數(shù)(如 MIN()MAX()SUM()AVG() 等)也可以實現(xiàn)去重的效果,因為聚合函數(shù)會對每個組返回一個值。

SELECT MIN(column_name) AS unique_column
FROM table_name
GROUP BY another_column;

4. 子查詢:

使用子查詢可以創(chuàng)建一個臨時表,其中包含唯一的記錄。

SELECT *
FROM (
    SELECT DISTINCT column_name
    FROM table_name
) AS subquery;

如果你需要在分組后去重,可以使用子查詢:

SELECT department_id, MIN(name) AS name
FROM employees
GROUP BY department_id;

這個查詢會返回每個部門的員工姓名,但每個部門只返回一個名字(這里使用了 MIN() 函數(shù),實際上 MIN() 和 MAX() 在這種用途下效果相同,因為名字是文本,不是數(shù)值)。

5. 臨時表:

創(chuàng)建一個臨時表來存儲去重后的結(jié)果。

CREATE TEMPORARY TABLE temp_table AS
SELECT DISTINCT column_name
FROM table_name;

SELECT * FROM temp_table;
DROP TEMPORARY TABLE temp_table;

6. 窗口函數(shù)(MySQL 8.0+):

使用窗口函數(shù) ROW_NUMBER()RANK()DENSE_RANK() 等可以為每個組分配一個唯一的行號。

SELECT column_name
FROM (
    SELECT column_name, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY another_column) AS rn
    FROM table_name
) AS subquery
WHERE rn = 1;

在支持窗口函數(shù)的數(shù)據(jù)庫中,你可以使用 ROW_NUMBER() 或 RANK() 來實現(xiàn)更復(fù)雜的去重邏輯:

SELECT department_id, name
FROM (
    SELECT department_id, name,
           ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY name) AS rn
    FROM employees
) t
WHERE t.rn = 1;

這個查詢會為每個部門的員工按名字排序,并為每個部門的每個名字分配一個行號。外層查詢?nèi)缓筮x擇每個部門的第一個名字,從而實現(xiàn)去重。

7. 使用 GROUP_CONCAT():

如果你想要將重復(fù)的行合并成一個字符串,可以使用 GROUP_CONCAT()。

SELECT column_name, GROUP_CONCAT(another_column SEPARATOR ', ') AS concatenated_values
FROM table_name
GROUP BY column_name;

8.使用 DISTINCT ON(MySQL不支持,但適用于其他數(shù)據(jù)庫如PostgreSQL):

在MySQL中沒有 DISTINCT ON 語法,但這是其他數(shù)據(jù)庫中去重的一種方法。

選擇哪種方法取決于你的具體需求,比如你想要保留哪些列,是否需要考慮排序等。在實際應(yīng)用中,可能需要結(jié)合使用多種方法來達到預(yù)期的效果。

到此這篇關(guān)于MySQL中去重處理的方法小結(jié)的文章就介紹到這了,更多相關(guān)MySQL 去重處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 5.7.17壓縮版安裝筆記

    MySQL 5.7.17壓縮版安裝筆記

    這篇文章主要介紹了MySQL 5.7.17壓縮版安裝筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • MySQL 創(chuàng)建三張關(guān)系表實操

    MySQL 創(chuàng)建三張關(guān)系表實操

    這篇文章主要介紹了MySQL 創(chuàng)建三張關(guān)系表實操,文章說先創(chuàng)建學(xué)生表然后科目表和分?jǐn)?shù)表三張有著密切關(guān)系的表,下文實操分享需要的小伙伴可以參考一下
    2022-03-03
  • Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表

    Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表

    這篇文章主要介紹了Mysql 存儲過程中使用游標(biāo)循環(huán)讀取臨時表的方法,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • mysql數(shù)據(jù)庫重命名語句分享

    mysql數(shù)據(jù)庫重命名語句分享

    這篇文章主要介紹了mysql數(shù)據(jù)庫重命名語句救命示例,語句中的數(shù)據(jù)庫表前綴換成自己的就可以了,大家參考使用吧
    2014-01-01
  • 完美解決MySQL數(shù)據(jù)庫服務(wù)器CPU飆升問題

    完美解決MySQL數(shù)據(jù)庫服務(wù)器CPU飆升問題

    這篇文章主要介紹了解決 MySQL 數(shù)據(jù)庫服務(wù)器 CPU 飆升的方法,包括定位問題(如使用工具監(jiān)控、查看慢查詢?nèi)罩荆?、?yōu)化 SQL 查詢、調(diào)整配置參數(shù)、優(yōu)化數(shù)據(jù)庫架構(gòu)、檢查硬件資源、處理鎖競爭問題等,還通過電商業(yè)務(wù)系統(tǒng)的案例進行了詳細分析及給出解決方法,最終優(yōu)化效果顯著
    2025-02-02
  • MyBatis動態(tài)SQL、模糊查詢與結(jié)果映射操作過程

    MyBatis動態(tài)SQL、模糊查詢與結(jié)果映射操作過程

    本篇所講的動態(tài)SQL,是mybatis通過標(biāo)簽元素的形式,?如if,?choose,?when,?otherwise,?trim,?where,?set,?foreach等標(biāo)簽完成對sql的拼接功能,使用起來也非常靈活方便,這篇文章主要介紹了MyBatis動態(tài)SQL、模糊查詢與結(jié)果映射,需要的朋友可以參考下
    2023-08-08
  • Mysql中Identity 詳細介紹

    Mysql中Identity 詳細介紹

    這篇文章主要介紹了Mysql中Identity 的相關(guān)資料,并附示例代碼,需要的朋友可以參考下
    2016-09-09
  • mysql 5.7.16 安裝配置方法圖文教程(ubuntu 16.04)

    mysql 5.7.16 安裝配置方法圖文教程(ubuntu 16.04)

    這篇文章主要為大家分享了ubuntu 16.04下mysql 5.7.16 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 查找MySQL中查詢慢的SQL語句方法

    查找MySQL中查詢慢的SQL語句方法

    這篇文章主要介紹了查找MySQL中查詢慢的SQL語句方法,需要的朋友可以參考下
    2017-05-05
  • 全面解析MySQL中的隔離級別

    全面解析MySQL中的隔離級別

    這篇文章主要介紹了MySQL中的隔離級別的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下。
    2021-01-01

最新評論