mysql - 从表中删除语法

标签 mysql

我有一个表(除其他外)有 2 列(比如 AB ),其中有 primary key一个带有 timestamp (说C)。我想删除除最后 XXX 条目之外的所有内容(按时间戳排序时)。谁能帮我解决语法问题吗?我想应该是这样的:

DELETE FROM Table WHERE A, B NOT IN (SELECT A, B FROM Table ORDER BY C DESC LIMIT XXX)

这个 SQL 正确吗?

编辑:不知何故,这个问题因重复而被关闭。然而,所提到的问题仅具有适用于只有一个主键(或索引)的表的答案。如何将其扩展到有两个主键(或索引)的表?

最佳答案

你可以试试这个

DELETE FROM TABLE T1 INNER JOIN (SELECT A, B FROM TABLE ORDER BY C DESC LIMIT XXXX) AS T2 ON T1.A = T2.A AND T1.B = T2.B 

在内部选择中定义删除条件。

关于mysql - 从表中删除语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38952505/

相关文章:

php - Laravel 5.2 - 使用字符串作为 Eloquent 表的自定义主键变为 0

mysql - 减少同一张表上的连接数

mysql - 汇总不同组的每个 ID 的结果

php - 如果存在则按另一个表列排序

mysql - 记录和统计用户登录的系统

MySQL 错误 "Unknown column in ' 字段列表'"

php header 不起作用,可能是什么错误?

mysql - 在具有多个条件的 MySQL 中使用 group by 子句的正确方法是什么?

php - php 中的分页,url 中带有哈希值

php - phpmyadmin 和 php PDO 之间的区别