当前位置: 首页 > article >正文

【sql】MySQL中去重处理的方法

在MySQL中,去重通常指的是从查询结果中删除重复的行。这可以通过多种方式实现,具体取决于你的需求。以下是一些常见的去重方法:

1. DISTINCT 关键字:

使用 DISTINCT 关键字可以返回唯一不同的值。

SELECT DISTINCT column_name FROM table_name;

2. GROUP BY 子句:

使用 GROUP BY 子句可以对结果集进行分组,每个组只返回一条记录。

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

3. 聚合函数:

使用聚合函数(如 MIN(), MAX(), SUM(), AVG() 等)也可以实现去重的效果,因为聚合函数会对每个组返回一个值。

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

4. 子查询:

使用子查询可以创建一个临时表,其中包含唯一的记录。

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

5. 临时表:

创建一个临时表来存储去重后的结果。

CREATE TEMPORARY TABLE temp_table AS
SELECT DISTINCT column_name
FROM table_name;

SELECT * FROM temp_table;
DROP TEMPORARY TABLE temp_table;

6. 窗口函数(MySQL 8.0+):

使用窗口函数 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;

7. 使用 GROUP_CONCAT()

如果你想要将重复的行合并成一个字符串,可以使用 GROUP_CONCAT()

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

8.使用 DISTINCT ON(MySQL不支持,但适用于其他数据库如PostgreSQL):

在MySQL中没有 DISTINCT ON 语法,但这是其他数据库中去重的一种方法。

选择哪种方法取决于你的具体需求,比如你想要保留哪些列,是否需要考虑排序等。在实际应用中,可能需要结合使用多种方法来达到预期的效果。


http://www.kler.cn/a/312947.html

相关文章:

  • Apache ECharts
  • 【韩老师零基础30天学会Java 】07章 面向对象编程(基础)
  • wordpress搭建主题可配置json
  • 物联网(RFID)全景:被装信息化监控应用与挑战
  • sqoop import将Oracle数据加载至hive,数据量变少,只能导入一个mapper的数据量
  • MarsCode算法题之二叉树供暖问题
  • SpringMVC 处理 Ajax 请求
  • 【204】C++的vector删除重复元素
  • Java 基础篇:环境搭建、基本语法与面向对象编程
  • 【JPCS出版】第二届应用统计、建模与先进算法国际学术会议(ASMA2024,9月27日-29)
  • 华为OD机试真题- MELON的难题-2024年OD统一考试(E卷)
  • Leetcode 416. 分割等和子集(Medium)
  • 【第34章】Spring Cloud之SkyWalking分布式日志
  • 程序人生-2024我的个人总结
  • VScode开发GD32移植(标准库通用),保姆级!!!!!!!
  • OCR两篇革命之作
  • C#区分值类型和引用类型【一文读懂】
  • 第十三周:机器学习笔记
  • 【开发语言】写程序的两大基本原则(PO和NT原则)
  • three.js 热力图
  • Android Perfetto 学习
  • 聚焦于 Web 性能指标 TTI
  • 2024新动态:低代码开发占领新常态市场
  • ImportError: DLL load failed while importing _ssl: 找不到指定的模块的解决方法
  • man 命令:查看命令的帮助信息
  • 【学习资料】袋中共36个球,红白黑格12个,问能一次抽到3个红4个白5个黑的概率是多少?