問題タブ [rownum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - Oracle ORDER BY と ROWNUM を正しく使用するには?
ストアド プロシージャを SQL Server から Oracle に変換して、製品と互換性を持たせるのに苦労しています。
タイムスタンプに基づいて、いくつかのテーブルの最新のレコードを返すクエリがあります。
SQLサーバー:
=>それは私に最新のレコードを返します
しかし、オラクル:
ORDER BY
=>ステートメントに関係なく、(おそらくインデックスに応じて)最も古いレコードが返されます!
要件に合わせて、Oracle クエリを次のようにカプセル化しました。
そしてそれは動作します。しかし、特に関係するテーブルに多くのレコードがある場合は、恐ろしいハックのように思えます。
これを達成する最良の方法は何ですか?
sorting - 別の列の並べ替え順序を変更しながらrownumの並べ替え順序を維持するにはどうすればよいですか?
Oracle11g
列の並べ替え順序に関係なく、rownumを順番に(最小から最大に)表示したいと思います。これは、このクエリに示すように、副選択を介してクエリを送信することで実現できます。
質問:rownumの並べ替えを「orderby」句から独立させる他の方法はありますか?
副選択を行わない場合、列は次のようにソートされるため、rownumはソートされます。
sql - dbms_random.value 関数を使用しているときに、この Oracle SQL クエリに rownum フィールドを含める必要があるのはなぜですか?
いくつかのテーブルからランダムなサンプルを取得していますが、クエリの書き方によっては機能しないことに気付きました。明らかに、私は all_tab_columns を使用していませんでした。バニラ インスタンス (9.2.0.8) で動作する例を提供しただけです。
なぜこれが機能するのですか?
しかし、これは結果を返しません。
クエリの rownum < 10000 は何を達成しますか?
編集:何が機能しないかを明確にしました。
編集:バージョン9.2.0.8を追加
sql - rownumを使用して、OracleでIDがインクリメントされたテーブルを更新しても安全ですか?
MySqlと同様に、空の列を増分値で更新(塗りつぶし)したいのですが、Oracleを使用します。つまり後
すべてのレコードで、ID
列が一意の値を受け取るようにします。その後、NotNullと一意の制約を有効にして主キーにします。
私はすぐに思いついた
しかし、私はこれについて悪い気持ちを持っています。私のテストでは期待どおりに機能しますが、例は証明されていません:-)
rownum
ステートメントでこのように使用するのは安全update
ですか?
oracle - ページ付けselectステートメントとROWNUMでラップされたサブクエリの動作
私は次の「ワッパー」を使用して、いくつかの場面でページ付けを実装しました。これは、「標準のページング選択」と呼ばれることがよくあります。したがって、selectステートメントの結果をページ分割するには、selectステートメントを「標準のページング選択」でラップするだけです。
私の質問は、ページングビットの動作とROWNUM周辺の魔法に関するものです。私の理解では、サブクエリは毎回完全な結果セットを選択するわけではなく、確認などを探していましたか?
次のとおりです。たとえば、ページサイズが50の場合、上記のページング動作の正しい説明は次のとおりです。
選ぶ:
- ページ1(例:0-50)サブクエリは0-50行を選択します
- ページ2(例:51-100)サブクエリは0-100行を選択します(外部クエリは50-100に制限します)
- ページ3(例:101-150)サブクエリは0-150行を選択します(外部クエリは101-150に制限します)
- ページ4(例:151-200)サブクエリは0-200行を選択します(外部クエリは151-200に制限します)
- 5ページ(例:201-250)サブクエリは0-250行を選択します(外部クエリは201-250に制限します)
...など、パターンを見ることができます。
「ページ」に進むほど、サブクエリで実行する必要のある作業が増えます。これは正しいです?もしそうなら、ROWNUMはこれをどのように行いますか?
前もって感謝します。そしてフィードバックをいただければ幸いです
sql - Oracle SQL - 次のレコードの内容でデータベース フィールドを更新する
顧客テーブルの「名前」フィールドを匿名化しようとしています。次のレコードで、すべてのレコードの「名前」を顧客の名前に置き換えたいです。(私は知っています:それは本当に匿名ではありませんが、「name」と「customerId」はその後一致しません。私の目的にはそれで十分です)
これを試しましたが、ORA-01747 エラーが発生します。
なにが問題ですか?テーブル内の次の「名前」フィールドの内容ですべての「名前」フィールドを更新するにはどうすればよいですか?
oracle - Oracle10gのテーブル内の行のグループから特定の行の行番号を取得する
USER_ROLES
Oracle10gで次のような名前のテーブルがあります。
USER_ID
テーブルの外部キーはどこにありますかUSER_TABLE
。特定のユーザー()に関連付けられた行のグループから特定の行の行番号を知る必要があります(USER_ID
このテーブルのすべての行に基づくわけではありません)。
次のSQLは、このテーブルのすべての行にUSER_ROLE_ID
基づいて、特定の(この場合は28)の行番号を取得します。
この場合、3が表示されます。
ただし、特定のユーザーにのみ関連付けられている行のグループから行番号を取得する必要があります。そのために、次のSQLを試してみると、
この場合、私はWHERE
からの句を変更しました
に
次のエラーが発生します。
では、このシナリオでは、特定のユーザーに関連付けられている行のみから行番号を取得する方法は何ですか?
sql - Oracleクエリのrownumの問題
このクエリを実行しようとしていますが、ゼロ行が返されます。なぜ手がかりはありますか?
しかし、ROWNUM句を指定せずに上記のクエリを実行すると、レコードが見つかります。
最初のクエリが機能しない理由がわかりません。
ms-access-2007 - MS AccessデータベースでPK列の値が増加する、あるテーブルから別のテーブルに行を挿入する
table1(id int,name nvarchar(50)) と table2(id int,name nvarchar(50)) の 2 つのテーブルがあります。両方のテーブルの id は主キーです。PK 値を増やして table2 から table1 に行を移動したい、つまり、すべての行をコピーするために table1 の id=max(id)+1 が必要です。
しかし、ROW_NUMBER() は Acces データベースでは機能しません。組み込みの自動インクリメント プロパティを使用したくありません。行を削除してから行を途中に挿入したいなどの理由で、組み込みの自動インクリメント プロパティによって操作が制限されるからです。 MSアクセスで同じことを行うにはどうすればよいですか??
oracle - サブクエリでrownumを使用する
アルゴリズムでは、ユーザーはクエリを渡します。たとえば、次のようになります。
クエリは次を返します。
アルゴリズムは選択属性 (上記の例) のカウントを必要o_orderdate, o_orderpriority
とするため、クエリを次のように書き換えます。
このクエリは次を返します。
ただし、意図した結果は次のとおりです。
解析段階を書き直す方法や、ユーザーが構文的に異なるクエリを渡して上記の結果を受け取る方法はありますか?