Mysql 删除帐户中的所有行,最近的11行除外

Mysql 删除帐户中的所有行,最近的11行除外,mysql,sql,Mysql,Sql,提交审阅后,我尝试运行一个查询,删除所有具有匹配帐号的行,但最近的11行除外。我的表格由“帐户”、“戳记”(日期时间)和“评论”组成 帐号在变量$account中传递 DELETE FROM table WHERE account=? AND stamp NOT IN (SELECT stamp FROM table ORDER BY stamp DESC LIMIT 11) 不确定查询出了什么问题。您可以通过删除和加入来执行此操作: delete t from table t le

提交审阅后,我尝试运行一个查询,删除所有具有匹配帐号的行,但最近的11行除外。我的表格由“帐户”、“戳记”(日期时间)和“评论”组成

帐号在变量
$account
中传递

DELETE FROM table 
WHERE account=?
AND stamp NOT IN (SELECT stamp FROM table ORDER BY stamp DESC LIMIT 11)

不确定查询出了什么问题。

您可以通过
删除
加入
来执行此操作:

delete t
    from table t left join
         (select t.*
          from table t
          where account = ?
          order by stamp desc
          limit 11
         ) tt
         on t.account = tt.account and t.stamp = tt.stamp
    where t.account = ? and tt.account is null;

我使用了@juergen d的答案,但似乎您的解决方案也会起作用,因此投票结果是:)@bcintegrity。这两个人做的事情不一样。此版本在帐户中保留11条记录。Juergen的版本只在所有数据上保留了11个最新时代戳中的版本。保留11个版本似乎是你的要求。我明白你的意思。我在Juergen示例的子查询中添加了
WHERE account='$account'
语句,该语句工作正常。出于某种原因,
加入
吓到我了。lol:)