2009-03-26 12 views
6

IDがnullのレコードの半分を選択する方法を理解しようとしています。その結果セットを使用して別のIDフィールドを更新しようとしているので、私は半分を望んでいます。次に、そのIDフィールドの別の値で残りを更新します。レコードの半分のみを選択する

本質的に私は更新したいフィールドのsomeFieldIDの2つの値の間で基本的に更新を分割する別の番号でsomeFieldIDレコードの半分を更新したい。

答えて

11

oracleでは、ROWNUMプsued列を使用できます。私はあなたがTOPを使用できるSQL Serverを信じています。 例:

select TOP 50 PERCENT * from table 
+0

一番下の50%の種類はありますか?あなたが100レコードを持っていると言うように、ボトムは最後の50でしょうか? – PositiveGuy

+1

Order by句を使用する –

6

あなたはパーセントで選択することができます。

SELECT TOP 50 PERCENT *fields* FROM YourTable WHERE ... 
1

次のSQLは、テーブルの最初の半分のcol_idsを返します。

SELECT col_id FROM table 
WHERE rownum <= (SELECT count(col_id)/2 FROM table); 

col_idsの総数が奇数である場合、あなたが得る前半 - 、例えば、我々は51件の合計の記録、カウント数(col_id)/ 2リターン25.5を持っているので、これは1、この結果に等しい丸はないので、25以下のすべてを得ます。つまり、他の26人は返されません。

しかし、私は逆の文の作業を見ていない:

SELECT col_id FROM table 
WHERE rownum > (SELECT count(col_id)/2 FROM table); 

あなたがテーブルの残りの半分をしたいのであれば、あなただけの一時テーブルに最初の結果を格納することができ、TABLE_Aそれを呼び出すことができます。それからちょうどこの表から、元のテーブルの上にMINUSの操作を行います。

SELECT col_id FROM table
MINUS
SELECT col_id FROM table_a

うまくいけば、これは誰かに役立ちます。

関連する問題