mysql - SQL 在具有限制的选择查询后删除行

标签 mysql sql sql-delete

我想从一个包含多个用户的表中删除除用户最近的 20 个测试之外的所有测试。

尝试 1:

DELETE FROM tests WHERE EXISTS (SELECT * FROM tests WHERE user_id = 38 ORDER BY test_timestamp DESC LIMIT 20, 100);

尝试 2:

DELETE FROM tests WHERE user_id = 38 ORDER BY test_timestamp DESC LIMIT 20, 100;

是否有任何更改可以让上述示例正常工作,或者我是否需要使用 PHP 设置行计数变量来解决我的偏移问题?

最佳答案

尝试:

DELETE FROM tests 
WHERE tests.user_id = 38
and tests.ID in (SELECT id 
FROM tests t
WHERE t.user_id = tests.user_id
ORDER BY test_timestamp DESC LIMIT 20, 100);

关于mysql - SQL 在具有限制的选择查询后删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030037/

相关文章:

sql - 删除多行而不锁定它们

php - 评论的发布数据未传输至查询

mysql - 有没有办法在 MySQL 中提交后回滚?

javascript - Codeigniter:以管理员用户身份登录并以员工用户身份登录

postgresql - 根据第三个表触发更新以删除另一个表中的行

php - 帖子不会从数据库中删除

php - 损坏的 PHP 登录脚本

php - 检索给定日期时间前 10 分钟的记录

mysql - 是否不可能有一个检查约束引用一个也有外键的列?

sql - 如何在 Postgres 事务中的下一个查询中使用查询结果?