假设我有一个包含列的表:
id, username, createdat(timestamp).
如何删除单个用户的所有行,最旧的 20 行除外?
所以基本上其他用户的行应该保持不变。
我知道下面的代码是错误的,但仍然想分享我目前所拥有的。欢迎任何意见或建议。
SELECT
*
FROM
tableA
WHERE
NOT EXISTS( SELECT
*
FROM
tableA
WHERE
username = 'abcdefg'
ORDER BY id ASC
LIMIT 20)
最佳答案
你很接近。
DELETE FROM
tableA
WHERE
id NOT IN(
SELECT
id
FROM
tableA
WHERE
username = 'abcdefg'
ORDER BY createdat ASC LIMIT 20)
AND
username = 'abcdefg'
关于sql - 删除单个用户除最早的 20 行以外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41971912/