gpt4 book ai didi

如果 max(id) - min(id) > 50,000,则 mysql 删除较早的数据

转载 作者:行者123 更新时间:2023-11-29 03:57:16 26 4
gpt4 key购买 nike

我有一个表,我需要将其中的总行数保持在 50,000 行以内。该表包含一个 Id 字段(id 是自动递增的)。

如何检查 max(id) - min(id) > 50,000,然后删除前面的行?

DELETE FROM news WHERE if (max(id) - min(id) > 50000) 

如果 max(id) - min(id) > 50000,此查询 将删除所有行,正确的方法是什么?理想情况下,我需要一个单行命令,请原谅 SSH 方法。谢谢。

最佳答案

DELETE d 
FROM news AS d
JOIN
( SELECT MAX(id)-50000 AS lim
FROM news
) AS m
ON d.id < m.lim ;

当然,上面不会留下恰好 50K 行,因为 id 序列中可能存在间隙。但我想这是意料之中的,不是问题。如果您真的想恰好保留 50K 行,则任何语句的效率都可能较低。你可以试试这个:

DELETE d 
FROM news AS d
JOIN
( SELECT id AS lim
FROM news
ORDER BY id DESC
LIMIT 1 OFFSET 50000
) AS m
ON d.id <= m.lim ;

关于如果 max(id) - min(id) > 50,000,则 mysql 删除较早的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com