Oracle テーブルに 10,000 行のデータがあり、最初の行に 1、2 番目に 2 などを返す列を生成します。3 番目に 1、4 番目に 2、5 番目に 1、6 番目に 2 などです。 SQLクエリまたはこのように列を更新できるスクリプトを使用してそれを行うことができる方法.上記のように1,2を生成することはよく考えましたが、SQLまたはその他を使用してこれを行う必要はありませんでした私のrequirements.plzのシナリオは、テーブルデータでこれを行う可能性がある場合に役立ちます
質問する
65 次
2 に答える
1
ROWNUM
とMOD
関数を組み合わせて使用できます。
クエリは次のようになります。
SELECT ROWNUM, 2 - MOD(ROWNUM, 2) FROM ...
このMOD
関数は、偶数行の場合は 0 を返し、奇数行の場合は 1 を返します。
于 2013-05-23T17:02:48.093 に答える
0
select mod(rownum,5)+1,fld1, fld2, fld3 from mytable;
編集:要件を誤解していませんでした。それらを回避しました。列を追加してからそのようにテーブルを更新することは、設計上の考えとしては良くありません。テーブルが完全に静的であることはめったになく、ルール テーブルや検証テーブルであっても同様です。これが意味を持つのは、テーブルが削除、挿入、および更新に対してロックされている場合のみです。既存の行を変更すると、論理的な順序が変わる可能性があります。これは決して指定されませんでした。削除とは、シーケンス全体を書き直す必要があることを意味します。更新と挿入は同じ効果があります。
これを行いたい場合は、シーケンスを使用して偽のカウンターを挿入できます。順序を知っていて、その順序で挿入と更新を制御できると仮定して、何度も循環するシーケンス。
于 2013-05-23T17:02:43.483 に答える