我想从Teradata中的表中删除前n行或后n行。但是我没有得到任何正确的查询。谁能告诉我怎么做到这一点?
答案 0 :(得分:0)
我没有使用TeraData的经验,但如果我正在使用SQL,我会这样做:
Delete From |TableName| where |the ID column Name|
IN (Select top(n) |the ID column Name| from |TableName|)
因此,例如,如果我有一个Customer表,并且此表包含CustomerID作为主键列和CustomerName,我想删除前10行,我会是这样的:
Delete From Customer where CustomerID
IN (Select top(10) CustomerID from Customer)
我希望它可以提供帮助
答案 1 :(得分:0)
subselect中的前N在删除时受到限制,而不是在其他上下文中。
因此,创建一个易失性表而不是subselect
create volatile table myDel as (
select id from myTable
sample .25
) with data on commit preserve rows;
delete T
from myTable T, myDel D
where T.id = D.id;
将删除25%的数据(BTW,样本有很多选项如何构建样本)
使用volatile table和top n以及一些订单标准,您可以清楚地定义top / last是什么。
create volatile table myDel as (
select top 3 id from myTable order by col_1
) with data on commit preserve rows;