Teradata:从表中删除n行

时间:2017-04-07 07:05:06

标签: teradata sql-delete

我想从Teradata中的表中删除前n行或后n行。但是我没有得到任何正确的查询。谁能告诉我怎么做到这一点?

2 个答案:

答案 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;