保留顶部行:在 SQL 中从数据库表中删除除 n 之外的所有行
当面临修剪表中的任务时在数据库中,需要只保留顶部指定数量 (n) 的行,同时消除其余行。为了有效地实现这一点,SQL 提供了一个简单的解决方案。
DELETE 语句可用于删除除前 n 行之外的所有行。语法如下:
DELETE FROM TableName WHERE RowID NOT IN (SELECT TOP n RowID FROM TableName)
此查询从 TableName 表中选择所有行,不包括子查询中出现的行。子查询从表中检索前 n 个 RowID。
示例:
考虑一个名为“Customers”的表,其中包含“CustomerID”和“CustomerName”等列。要根据“CustomerID”删除除前 10 位客户之外的所有客户,可以使用以下查询:
DELETE FROM Customers WHERE CustomerID NOT IN (SELECT TOP 10 CustomerID FROM Customers)
注意:
Chris 敏锐地观察到,在子查询中使用 TOP 子句的缺点是其潜在的性能影响。对于一次性操作,这可能不是一个大问题,但对于频繁使用,应考虑替代方法。
以上是如何只保留 SQL 数据库表中的前 N 行?的详细内容。更多信息请关注PHP中文网其他相关文章!