从sybase数据库中的表中删除特定范围的行

时间:2014-01-09 10:51:47

标签: sql-server-2005 sybase

我需要从sybase数据库中的表中删除特定范围的行。

例如,我有10行。但我想从我的表中删除5到7行。 我们怎样才能删除。

2 个答案:

答案 0 :(得分:0)

DELETE FROM someTable
WHERE myPrimaryKey in ( 5, 6, 7 )

换句话说:您不能告诉DBMS从表中删除“第5条记录”。您必须构造一个where子句,该子句与您想要删除的行完全匹配。

当你考虑它时,这是有道理的,因为DBMS不保证表中记录的任何内部顺序,也就是说,它没有第n条记录的内在概念。

答案 1 :(得分:0)

默认情况下,表没有预定的顺序,因此您必须定义删除第5-7行的顺序。您可以尝试使用ROW_NUMBER()来定义表中的顺序以计算行数。例如,如果您有主键ID,则可以按此列排序:

WITH T1 AS
(
 SELECT T.*,
        ROW_NUMBER() OVER (ORDER BY ID) as RowNum
        FROM T
)

DELETE FROM T1 WHERE RowNum between 5 and 7

SQLFiddle demo