php - 删除旧的数据库条目

标签 php mysql

我试图在我的数据库中保留 10 个最近的条目并删除旧的。我试过 DELETE FROM people ORDER BY id DESC LIMIT $excess,但它只是删除了前 10 个条目。

$query = "SELECT * FROM people";
$result = mysqli_query($conn, $query);
$count = mysqli_num_rows($result);
if ($count > 10) {
    $excess = $count - 10;
    $query = "DELETE FROM people WHERE id IN(SELECT id FROM people ORDER BY id DESC LIMIT '$excess')";
    mysqli_query($conn, $query);
}

最佳答案

你可以使用这个:-

DELETE FROM `people`
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM `people`
    ORDER BY id DESC
    LIMIT 10
  ) 
);

此外,您的查询在逻辑上也不正确,您正在按降序获取记录。即 Latest to older 并且您正在删除最新的记录。请改用 ASC

关于php - 删除旧的数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17326740/

相关文章:

mysql - 在 SQL 中创建唯一的字符/数字字符串

php - 使用 PHP session 更改文本颜色不起作用

php - mysqli 使用带有准备好的语句和查询的 select *

php - 如何让我的 friend 在大型数据库上进行 mysql 查询?

mysql选择数字溢出

mysql - 选择加载时间较少的sql语句

mysql - GROUP_CONCAT 中的 CONCAT - 如何删除重复结果

php - MySQL数据库插入错误

php - 按特定类别从数据库中获取博客

javascript - 数据库表值未通过 AJAX 和 Jquery 更新