使用SELECT TOP 10000创建AS

时间:2012-03-22 10:22:52

标签: oracle

我需要从另一个表创建一个表,但我只希望在新表中添加最后10000个记录。任何人都可以通过修改此声明告诉我如何做到这一点:

create table export_cluster_125m
as
(select * from cluster_125m);

2 个答案:

答案 0 :(得分:6)

你说你想要"最后" 10000行。假设这可以由诸如created_date之类的列确定,则需要按该列排序(降序),然后获取该查询返回的前10000行。这可以使用ROWNUM完成,但,如下所示:

-- Will not work correctly
select * from cluster_125m
where rownum <= 10000
order by created_date desc;

这将返回大约10000行,按created_date(降序)排序 - 但它们通常不是最新的10000行。要做到这一点,你需要像这样嵌套查询:

select * from
( select * from cluster_125m
  order by created_date desc
)
where rownum <= 10000;

现在所有行都按降序排序,然后然后排出前10000行。

答案 1 :(得分:1)

试试这个:

create table export_cluster_125m
as
select * from cluster_125m where rownum<=10000;