2012-03-22 11 views
0

別のテーブルからテーブルを作成する必要がありますが、最後の10000レコードを新しいテーブルに追加するだけです。いずれかがこの声明を変更することによって行うことができる方法を教えてもらえます:SELECT TOPを使用して作成10000

create table export_cluster_125m 
as 
(select * from cluster_125m); 
+0

oracleはrownumを使用しているため、 'WHERE ROWNUM <10000' – bdares

+0

oracleのような節がテーブルの行の順番を保存しないようにしたいと考えています。追加された注文を保管していない場合、最後の10000行を選択することはできません。 – turbanoff

答えて

6

あなたが「最後の」10000行をしたいと言います。これは、created_dateなどの列で判断できると仮定すると、その列で並べ替える(降順)必要がありますし、そのクエリによって返された最初の10000行を取得します。これは、ROWNUMを使用して行うが、このようなないすることができます。created_dateが注文したいくつかの10000行を返します

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

は、(降順) - しかし、彼らは一般的に、最新の10000行ではありません。あなたが巣に必要なことを行うには、このようなクエリ:

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

は今、すべての行が降順にソートされ、その後、最初の10000が取られます。

+0

私はちょうど1つのテーブルでそれをやって、それは完全に働いた。答えを教えてくれてありがとう。 – CSharpened

1

、このいずれかを試してみてください。

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

これはあなたに10000のランダムな行を与えます。 – Phil