1
我想从“idx_links”表中删除除最新的20个之外的所有旧行。 pubDate是时间戳。删除除前20位的所有旧行
这个选择带来的行:
SELECT @row := @row + 1 AS row, t.*
FROM idx_links t, (SELECT @row := 0) r
having(row>20)
ORDER BY pubDate DESC
如何删除此行?
我想从“idx_links”表中删除除最新的20个之外的所有旧行。 pubDate是时间戳。删除除前20位的所有旧行
这个选择带来的行:
SELECT @row := @row + 1 AS row, t.*
FROM idx_links t, (SELECT @row := 0) r
having(row>20)
ORDER BY pubDate DESC
如何删除此行?
这个怎么样 - 删除pubDate排名前20的所有行。
DELETE idx_links
WHERE ID NOT IN (SELECT ID FROM idx_links
ORDER BY pubDate DESC LIMIT 0,20);
交替日期,避免子查询的IN
条款:
DELETE idx_links
WHERE pubDate < (SELECT pubDate FROM idx_links
ORDER BY pubDate DESC LIMIT 20,1);
我想,(因为我给你相同的答案),但我有这个错误:'[ERR ] 1235 - 此版本的MySQL尚不支持“LIMIT&IN/ALL/ANY/SOME子查询”。我有MySql 5.1.39。 – Marco
反正+1你,因为我觉得这可能是最新的MySQL释放一个很好的解决方案...... – Marco
马可,怎么样通过pubdate的从上面找到20 pubdate的,并删除所有谁比,老年人(此时,而不是ID)。 –