【发布时间】:2025-12-31 19:35:01
【问题描述】:
我想在 Teradata 中实现以下目标。
给定一张桌子,我想
- 从表中获取前 N 行,例如,
SELECT TOP 100 * FROM table ORDER BY idx - 之后删除这些行,例如
DELETE FROM table WHERE idx IN (SELECT TOP 100 idx FROM table ORDER BY idx)
第二个查询甚至不起作用(子查询中不允许 TOP)。
是否有直接的方法来实现这种行为?理想情况下,即使是匆忙,但我也可以使用锁。
我也查看了队列表,但它们只允许 TOP 1,因此显然设计为一次只弹出一个元素。
【问题讨论】:
-
不知道teradata,你们有临时表吗?将 ID 插入临时表,然后从临时表中选择连接到表以返回行,然后删除。
-
是否允许删除顶部?
-
即使有order by子句也不允许top 100?