Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql 删除重复数据,保留一个

作者:優雅dē颓废   发布日期:2026-08-05   浏览:98

-- 删除重复数据,保留一个
-- 假设我们有一个表名为 `my_table`,其中有一列 `id` 和一列 `name`,我们想要删除 `name` 列中重复的数据,只保留一条记录。

-- 方法1:使用子查询和临时表
CREATE TEMPORARY TABLE temp_table AS
SELECT DISTINCT * FROM my_table;

TRUNCATE TABLE my_table;

INSERT INTO my_table
SELECT * FROM temp_table;

DROP TEMPORARY TABLE temp_table;

-- 解释:这种方法通过创建一个临时表来存储唯一的数据,然后清空原表并重新插入唯一的数据。

-- 方法2:使用 DELETE 语句结合 GROUP BY 和 ROW_NUMBER()
DELETE t1 FROM my_table t1
INNER JOIN my_table t2
WHERE t1.id > t2.id AND t1.name = t2.name;

-- 解释:这种方法通过自连接表,删除 `id` 较大的重复记录,保留 `id` 最小的记录。

-- 方法3:使用窗口函数(适用于 MySQL 8.0+)
WITH cte AS (
    SELECT id, name, ROW_NUMBER() OVER (PARTITION BY name ORDER BY id) AS rn
    FROM my_table
)
DELETE FROM my_table
WHERE id IN (SELECT id FROM cte WHERE rn > 1);

-- 解释:这种方法使用窗口函数为每一组 `name` 分配行号,然后删除行号大于1的记录。

上一篇:mysql for update

下一篇:mysql时间格式转换

大家都在看

mysql二级索引

mysqlavg函数保留小数

mysql显示表内容

mysql收集表统计信息

mysql经纬度距离计算

mysql 加密

mysql大小写转换函数

存储过程mysql

mysql 1265

mysql with语句

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站