如果您想要直接删除le_cms_article_data表中重复的content记录,并且希望同时删除le_cms_article表中对应的记录(即两个表通过相同的id关联),您可以使用以下的SQL语句:

sql
-- 删除le_cms_article_data中重复的content记录,并同时删除le_cms_article中对应的记录
DELETE a, d
FROM le_cms_article a
JOIN le_cms_article_data d ON a.id = d.id
WHERE d.content IN (
SELECT content
FROM le_cms_article_data
GROUP BY content
HAVING COUNT(*) > 1
)
AND d.id NOT IN (
SELECT MIN(id)
FROM le_cms_article_data
GROUP BY content
);
这个SQL语句的工作原理如下:

使用JOIN操作连接le_cms_article和le_cms_article_data两个表,通过id字段关联它们。

在WHERE子句中,首先使用子查询找出所有重复的content值。

接着,确保只删除那些不是每组重复content中最小id的记录。这是通过另一个子查询实现的,该子查询返回每组重复content的最小id。

DELETE a, d会同时删除le_cms_article(别名为a)和le_cms_article_data(别名为d)中的记录,因为它们是通过JOIN操作连接在一起的。

请注意,执行这样的删除操作前,一定要确保备份了数据库或相关表的数据,以防万一出现意外情况。此外,在执行删除操作之前,可以先运行一个SELECT查询来验证将要被删除的记录,以确保不会误删重要数据。例如:

sql
SELECT a.*, d.*
FROM le_cms_article a
JOIN le_cms_article_data d ON a.id = d.id
WHERE d.content IN (
SELECT content
FROM le_cms_article_data
GROUP BY content
HAVING COUNT(*) > 1
)
AND d.id NOT IN (
SELECT MIN(id)
FROM le_cms_article_data
GROUP BY content
);
这个查询会列出所有将要被删除的le_cms_article和le_cms_article_data的记录,但不会实际执行删除操作。您可以检查这些结果,以确保它们符合您的预期。一旦确认无误,再执行上面的DELETE语句。

delete from le_cms_article_data where not exists (select * from le_cms_article where le_cms_article_data.id =le_cms_article.id);

上面这段sql语句是跟随内容删除多余的TAG标签

如果你还想同时更新le_cms_article表,将那些被删除le_cms_article_data记录对应的title字段置为空,你可以结合使用另一条UPDATE语句,如下:

sql
UPDATE le_cms_article
SET title = NULL
WHERE id NOT IN (SELECT id FROM le_cms_article_data);
这条UPDATE语句会更新le_cms_article表,将那些其id不在le_cms_article_data表中的记录的title字段设置为NULL。注意,你应该先执行DELETE语句,然后再执行这个UPDATE语句,以确保先删除孤立的le_cms_article_data记录,再更新le_cms_article表。

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