在删除语句中偏移和获取

Offset and fetch in a delete statement

我想根据两个动态参数 P1 和 P2(数字)删除一些特定行

使用简单的 Select 语句:

SELECT * FROM TABLE WHERE (conditions) OFFSET P1 ROWS FETCH NEXT P2 ROWS ONLY;

我只想删除这些行,但找不到正确的方法。 我现在做的是这样的,看起来不太好:

DELETE TABLE WHERE id in (SELECT id FROM TABLE WHERE (conditions) OFFSET P1 ROWS FETCH NEXT P2 ROWS ONLY);

使用主键或ROWID访问行:

DELETE FROM mytable
WHERE rowid IN
(SELECT rowid FROM mytable WHERE (conditions) OFFSET p1 ROWS FETCH NEXT p2 ROWS ONLY);

当运行重复查询时,你会得到一个table由p1行组成的结果。但正如请求评论中的粘性位所提到的:没有 ORDER BY 这些行将是任意的。