如果有 4 行或更多行以用户名命名,如何删除一行


How do I delete a row if there are 4 or more rows named after the username

我的教授希望我们创建一个基于 Web 的评论系统,其中用户最多可以发送 3 条评论,如果用户决定创建另一个评论,而他在数据库中已经有 3 条以他的名字命名的评论,程序应该删除最旧的评论并保存新的评论。

我想到的是获取以用户命名的行,如果它大于或等于 4,我应该删除用户名 = 会话用户的行并插入新记录。虽然这只是理论上的,但这是最好的方法吗?你们还有其他建议吗?我究竟如何选择要删除的行?我是否基于最高comment_id?

读取:在 SQL 数据库中仅保留前 50 条记录,并删除其余记录

所以基本上这样做:

创建带有注释的自动递增 ID。然后:

DELETE FROM comments
WHERE
  id NOT IN (
    SELECT * FROM (
      SELECT id
      FROM comments
      ORDER BY date
      desc LIMIT 3) s
  )

不要删除数据库中的行,只需对选择查询执行限制 0,4在创建日期之前订购