让我们这么简单: 我有一个名为chat的表,其中有很多行,每个用户都可以添加一条新消息,这意味着该表可以变得非常大。
(我已经在网上查看了一些例子并不是很清楚。)
我需要删除所有旧消息,只保留25条最新消息。现在我希望通过id来实现,因为我的id设置为自动增量。
这就是我所拥有的,但它不起作用:
DELETE FROM `chat` ORDER BY `id` DESC LIMIT 0,50
我发现并改变了它,但没有运气!
我不知道该尝试什么。我不是很有经验,我知道基础知识,非常感谢任何帮助。
答案 0 :(得分:1)
保留50条记录:
DELETE FROM `chat`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `chat`
ORDER BY id DESC
LIMIT 50
) foo
);
答案 1 :(得分:-1)
我在评论中看到了你的PHP代码并编辑了我的答案。如果你正在寻找这个,这是有用的......
$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";
}