PHP & MySQL:删除所有旧行,保留 25 个最新行
PHP & MySQL: Delete all old rows keeping 25 of the newest rows
让我们简单点:
我有一个名为 chat 的 table,里面有很多行,每个用户都可以添加一条新消息,这意味着 table 可以变得很大。
(我在网上看过,有些例子不是很'clear'。)
我需要删除所有旧消息,只保留 25 条最新消息。现在我想通过id来做,因为我的id设置为自动递增。
这是我的,但它不起作用:
DELETE FROM `chat` ORDER BY `id` DESC LIMIT 0,50
我找到并更改了它,但没有成功!
我只是不确定要尝试什么。我不是很有经验,我知道基础知识,非常感谢任何帮助。
保留 50 条记录:
DELETE FROM `chat`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `chat`
ORDER BY id DESC
LIMIT 50
) foo
);
我在评论中看到了你的 php 代码并编辑了我的答案,如果你正在寻找这个,它正在工作......删除所有旧行,首先保留 25 个最新行 select 你聊天的所有记录 table,然后计算相同,估计你的限制,即从计数中扣除 25,此后,运行 在聊天 table 上删除,但按 DESC 顺序和给出从计数中减去 25 估计的极限。
$sqli = "SELECT * FROM chat";
$result = $conn->query($sqli);
$count = count($result);
$limit = $count - 25;
//echo $limit;
$sql = "DELETE FROM chat ORDER BY id DESC LIMIT $limit";
if ($conn->query($sql) === TRUE)
{
echo "true";
}
else
{
echo "false";
}
让我们简单点: 我有一个名为 chat 的 table,里面有很多行,每个用户都可以添加一条新消息,这意味着 table 可以变得很大。
(我在网上看过,有些例子不是很'clear'。)
我需要删除所有旧消息,只保留 25 条最新消息。现在我想通过id来做,因为我的id设置为自动递增。
这是我的,但它不起作用:
DELETE FROM `chat` ORDER BY `id` DESC LIMIT 0,50
我找到并更改了它,但没有成功!
我只是不确定要尝试什么。我不是很有经验,我知道基础知识,非常感谢任何帮助。
保留 50 条记录:
DELETE FROM `chat`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `chat`
ORDER BY id DESC
LIMIT 50
) foo
);
我在评论中看到了你的 php 代码并编辑了我的答案,如果你正在寻找这个,它正在工作......删除所有旧行,首先保留 25 个最新行 select 你聊天的所有记录 table,然后计算相同,估计你的限制,即从计数中扣除 25,此后,运行 在聊天 table 上删除,但按 DESC 顺序和给出从计数中减去 25 估计的极限。
$sqli = "SELECT * FROM chat";
$result = $conn->query($sqli);
$count = count($result);
$limit = $count - 25;
//echo $limit;
$sql = "DELETE FROM chat ORDER BY id DESC LIMIT $limit";
if ($conn->query($sql) === TRUE)
{
echo "true";
}
else
{
echo "false";
}