我需要从sybase数据库中的表中删除特定范围的行。
例如,我有10行。但我想从我的表中删除5到7行。 我们怎样才能删除。
答案 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