作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个脚本可以检查数据库中的重复对并选择除一个条目之外的所有需要删除的条目。
我有这个脚本可以选择需要删除的前 100 个条目并且工作正常:
SELECT*
FROM vl_posts_testing
INNER JOIN (
SELECT max(ID) AS lastId, `post_content`,`post_title`
FROM vl_posts_testing WHERE vl_posts_testing.post_type='post'
GROUP BY `post_content`,`post_title`
HAVING count(*) > 1) duplic
ON duplic.`post_content` = vl_posts_testing.`post_content`
AND duplic.`post_title` = vl_posts_testing.`post_title`
WHERE vl_posts_testing.id < duplic.lastId
AND vl_posts_testing.post_type='post'
LIMIT 0,100
但是,当我尝试使用以下方法删除这组数据时:
DELETE vl_posts_testing
FROM vl_posts_testing
INNER JOIN (
SELECT max(ID) AS lastId, `post_content`,`post_title`
FROM vl_posts_testing WHERE vl_posts_testing.post_type='post'
GROUP BY `post_content`,`post_title`
HAVING count(*) > 1) duplic
ON duplic.`post_content` = vl_posts_testing.`post_content`
AND duplic.`post_title` = vl_posts_testing.`post_title`
WHERE vl_posts_testing.id < duplic.lastId
AND vl_posts_testing.post_type='post'
LIMIT 100
我收到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 10' at line 8
脚本是使用这个答案 https://stackoverflow.com/a/6108860/1168944 构建的
实际上,该脚本在没有设置限制的情况下在少量数据上工作得很好,但是由于我在一个大表(大约 600k 个条目)上运行它,我需要将这个脚本拆分为一个只处理的例程由于处理器、内存等服务器限制,数据量有限。
还考虑了这个例子:MySQL LIMIT on DELETE statement但是结果是不同的,因为无论限制多小都不执行任何修改。
最佳答案
经过多次重试,我找到了一种方法让它工作:
DELETE vl_posts_testing
FROM vl_posts_testing
INNER JOIN (
SELECT max(ID) AS lastId, `post_content`,`post_title`
FROM vl_posts_testing WHERE vl_posts_testing.post_type='post'
GROUP BY `post_content`,`post_title`
HAVING count(*) > 1
LIMIT 0,100 ) duplic
ON duplic.`post_content` = vl_posts_testing.`post_content`
AND duplic.`post_title` = vl_posts_testing.`post_title`
WHERE vl_posts_testing.id < duplic.lastId
AND vl_posts_testing.post_type='post'
实际上,我所做的是为第一组数据设置一个内部限制,并将其与数据库的其余部分进行比较,以使其正常工作。它有效,但我不确定这是不是正确的方法。
关于mysql - 如何为mysql delete语句设置正确的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193211/
我是一名优秀的程序员,十分优秀!