1、SQL语句它将删除所有重复的文章标题,但保留每组中id最小的那一条记录:

DELETE a
FROM le_cms_article a
JOIN (
    SELECT title, MIN(id) as min_id
    FROM le_cms_article
    GROUP BY title
    HAVING COUNT(title) > 1
) b ON a.title = b.title AND a.id > b.min_id;

这个语句的工作原理如下:

子查询b首先找出所有重复的文章标题,并且对于每个重复的标题,它选择最小的id(即每组中“最开始”的那条记录的id)。
外部查询使用JOIN操作连接le_cms_article表和子查询b,基于相同的title。但是,它只连接那些id大于子查询中找到的最小id的记录。
DELETE语句删除所有连接到的记录,也就是除了每组中id最小的那条记录之外的所有重复记录。
请确保在执行此删除操作之前备份相关数据,以防万一出现错误。同时,在执行删除操作之前,最好先运行一个SELECT查询来验证哪些记录将被删除,这样可以确保你的删除逻辑是正确的。

2、SQL语句,它将删除所有重复的文章标题,但保留每组中id最小的那一条记录:

DELETE FROM le_cms_article_data
WHERE NOT EXISTS (
    SELECT *
    FROM le_cms_article
    WHERE le_cms_article_data.id = le_cms_article.id
);

在执行这个删除操作之前,请确保:

您已经备份了相关数据,以防万一删除操作有误。
您已经确认了这个删除操作符合您的业务逻辑需求。
您有足够的权限来执行这个删除操作。
如果您想要先查看哪些记录将会被删除,而不实际执行删除操作,您可以将DELETE替换为SELECT *,这样只会返回那些将要被删除的记录,而不会真的删除它们:

SELECT *
FROM le_cms_article_data
WHERE NOT EXISTS (
    SELECT *
    FROM le_cms_article
    WHERE le_cms_article_data.id = le_cms_article.id
);

运行这个SELECT查询后,您可以检查返回的结果,确保它们是您想要删除的记录。如果确认无误,再执行原始的DELETE语句。

特别声明:本站所有资源均为学习测试使用,请在下载后48小时之内自主删除,本站以学习为目的不承担任何法律责任!