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

mysql删除重复值只保留一个

作者:暗夜幽殤   发布日期:2026-03-31   浏览:68

-- 删除表中重复的记录,只保留一条
-- 假设我们有一个名为 'my_table' 的表,其中 'id' 是主键,'column1' 是可能存在重复值的列

-- 方法 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 语句 (适用于 MySQL 8.0+)
DELETE t1 FROM my_table t1
INNER JOIN my_table t2
WHERE t1.id > t2.id AND t1.column1 = t2.column1;

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

-- 解释:
-- 方法 1: 创建一个临时表来存储唯一记录,然后清空原表并将唯一记录重新插入。
-- 方法 2: 使用自连接删除重复记录,保留最小的 id。
-- 方法 3: 使用窗口函数为每组重复记录分配行号,删除行号大于 1 的记录。

上一篇:mysql tinytext

下一篇:mysql 日期加一天

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

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

Laravel 中文站