-- 删除重复数据只保留一条的示例代码
-- 假设我们有一个名为 `users` 的表,其中包含以下字段:
-- id (主键), name, email
-- 1. 首先,我们需要找到重复的数据。这里以 `email` 字段为例,找出所有重复的 `email`。
WITH Duplicates AS (
SELECT email, MIN(id) AS min_id
FROM users
GROUP BY email
HAVING COUNT(email) > 1
)
-- 2. 然后,删除这些重复的数据,只保留每个 `email` 的最小 `id` 记录。
DELETE FROM users
WHERE id NOT IN (
SELECT min_id
FROM Duplicates
)
AND email IN (
SELECT email
FROM Duplicates
);
-- 解释:
-- 1. 使用 `WITH` 子句创建一个临时表 `Duplicates`,其中包含每个重复 `email` 的最小 `id`。
-- 2. 使用 `DELETE` 语句删除那些 `id` 不在 `min_id` 列表中的记录,并且 `email` 在 `Duplicates` 中出现。
-- 这样就可以确保每个 `email` 只保留一条记录,删除其他重复的记录。
上一篇:mysql关联更新
下一篇:mysql区分大小写
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站