我有一个在 id 列上有 PK 的表。我需要清理表格并在表格中保留 5 个最近的记录(最后 5 个 id - 最近的记录)。
除了使用row_number()
还有其他想法吗?谢谢。
我有一个在 id 列上有 PK 的表。我需要清理表格并在表格中保留 5 个最近的记录(最后 5 个 id - 最近的记录)。
除了使用row_number()
还有其他想法吗?谢谢。
首先,您需要获取最近五行的 PK:
SELECT TOP 5 id FROM [table] ORDER BY id DESC
假设最近的行将具有最高的 PK,此子查询将返回 5 个最近行的 ID。
然后在WHERE
外部查询的子句中使用此子查询
DELETE FROM [table] WHERE id NOT IN ([subquery from above])
相当于这个
DELETE FROM [table] WHERE id NOT IN (id0, id1, id2, id3, id4)
完整的查询是:
DELETE FROM [table]
WHERE id NOT IN (SELECT TOP 5 id
FROM [table]
ORDER BY id DESC)
首先在临时表中插入前 5 条记录。然后在查询下方触发..,
从表名中删除
然后使用以下查询从临时表再次插入(5条记录)到主表。,
插入 Table_Name 选择 * from Temp_Table