問題タブ [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.

0 投票する
7 に答える
171727 参照

sql - SQL ROWNUM 特定の範囲内の行を返す方法

ROWNUM特定の範囲の値を返すにはどうすればよいですか?

私は次のことを試しています:

これは、演算子に一致する行のみを返します<

0 投票する
1 に答える
6562 参照

mysql - MySql:結合クエリステートメントで行番号を使用する方法は?

2 つのテーブルを結合し、フィールド「touch」の降順で結果を表示する MySQL ステートメントがあります。これは私のSQL文です

これは私にこのような結果を与えます

ここに画像の説明を入力

結果はパーフェクトで、Touch フィールドの降順に基づいています。問題は、rownum が正しくないことです。TouchフィールドのDESC順序を変更せずにrownumを順番に取得できるように、mySQLステートメントを変更する方法。

0 投票する
6 に答える
12525 参照

oracle - where rownum=1 Oracle で時間がかかるクエリ

次のようなクエリを実行しようとしています

このクエリは、基本的にテーブルの列名を取得することです。テーブルには100万件を超えるレコードがあります。上記の条件を設定すると、最初の行を取得するのに時間がかかります。最初の行を取得するための代替手段はありますか.

0 投票する
5 に答える
29079 参照

oracle - ROWNUM なしで上位 N 行を選択していますか?

宿題を手伝ってくれることを願っています:)

上位 N 位の高給の従業員を出力するクエリを作成する必要があります。

私のバージョンは完全に正常に動作します。
たとえば、トップ 3:

これにより、上位 3 位に含まれる同じ給与の従業員も出力されることに注意してください。

1: マイク、4080
2: スティーブ、2800
2: スーザン、2800
2: ジャック、2800
3: クロエ、1400


しかし今、私たちの先生は私たちが を使用することを許可していませんROWNUM
私は広範囲に検索しましたが、使用できるものは何も見つかりませんでした。


Justin Caves のヒントのおかげで、私の 2 番目の解決策です。

最初に私はこれを試しました:

エラーメッセージは次のとおりです:「myorder: 無効な識別子」

DCookie のおかげで、次のことが明確になりました。

「[...] where句が評価された後に分析が適用されるため、myorderが無効な識別子であるというエラーが発生します。」

SELECT をラップすると、これが解決されます。


私の先生は再びストライキをし、そのような風変わりな分析機能を許可しません。

@Justin Caves の3 番目のソリューション。

「分析関数も許可されていない場合、私が想像できるもう1つのオプション-実際には決して、実際に書くことのないものは、次のようなものになるでしょう」

0 投票する
1 に答える
2302 参照

sql - Oracle で最初の 10 行番号を取得する最初のクエリ結果セットを使用した 2 つのクエリの結合

Oracleで最初の10行番号を取得する最初のクエリ結果セットを使用した2つのクエリのユニオンが必要です。例: 最初のクエリが 10 行で、最大 rownum が 10 の場合のように、union の結果で 2 番目のクエリ rownum を 11 から開始したい。

0 投票する
1 に答える
1316 参照

select - HQL での rownum とエイリアシング

助けが必要...

この SQL クエリを HQL に変換する方法:

3 を返す必要があります。

ありがとう。

0 投票する
4 に答える
5109 参照

sql - Oracle でのページクエリの速度

これは私にとって終わりのないトピックであり、何かを見落としているのではないかと思っています。基本的に、私はアプリケーションで 2 種類の SQL ステートメントを使用します。

  1. 「フォールバック」制限のある通常のクエリ
  2. 並べ替えおよびページ化されたクエリ

ここで、数百万のレコードを持つテーブルに対するいくつかのクエリについて話し、数百万のレコードを持つさらに 5 つのテーブルに結合します。明らかに、それらすべてを取得することはほとんど望んでいません。そのため、上記の 2 つの方法でユーザー クエリを制限しています。

ケース 1は非常に単純です。ROWNUM追加のフィルターを追加するだけです。

Oracle の CBO はこのフィルターを実行計画に考慮し、おそらく操作を適用するため、これは非常に高速です(ヒントFIRST_ROWSによって強制されるものと同様です。/*+FIRST_ROWS*/

ただし、ケース 2LIMIT ... OFFSETは、他の RDBMS のように句がないため、Oracle では少し注意が必要です。したがって、「ビジネス」クエリを次のようにテクニカル ラッパーにネストします。

TOTAL_ROWSフィールドは、すべてのデータを取得しなくてもページ数を知るために計算されることに注意してください。通常、このページング クエリは非常に満足のいくものです。しかし、ときどき (私が言ったように、500 万以上のレコードを照会するとき、おそらくインデックスなしの検索を含む)、これは 2 ~ 3 分間実行されます。

編集:ページングの前にソートを適用する必要があるため、潜在的なボトルネックを回避するのは簡単ではないことに注意してください!

LIMIT ... OFFSET私は疑問に思っています、Oracleを含むの最先端のシミュレーションですか、それとも疑似列の代わりにウィンドウ関数TOTAL_ROWSを使用するなど、設計により高速になるより良い解決策がありますか?ROW_NUMBER()ROWNUM

0 投票する
4 に答える
82422 参照

sql - Oracle: ORDER BY 句と組み合わせて ROWNUM を使用してテーブル列を更新する

テーブルの列に実行中の整数を入力したいので、ROWNUM を使用することを考えています。ただし、のような他の列の順序に基づいてデータを入力する必要がありますORDER BY column1, column2。残念ながら、Oracle は次のステートメントを受け入れないため、これは不可能です。

次のステートメント (WITH 句を使用しようとする試み) もありません。

では、PL/SQL でカーソル反復法に頼らずに SQL ステートメントを使用してそれを行うにはどうすればよいでしょうか。

0 投票する
3 に答える
37844 参照

oracle - 結合条件のRownum

最近、いくつかのバグを修正しました。結合条件にrownumがありました。

このようなもの:t1.id=t2.idおよびrownum<2でt1を左結合します。したがって、「左結合」に関係なく、1行のみを返すことになっています。

これをさらに調べてみると、Oracleが「左結合」状態でrownumを評価する方法がわからないことがわかりました。masterとdetailの2つのサンプルテーブルを作成しましょう。

次に、このクエリがあります:

結果セットは予測可能です。マスターテーブルのすべての行と、この条件d.ref_master_id=t.idに一致する詳細テーブルの3つの行があります。

結果セット

次に、結合条件に「rownum = 1」を追加しましたが、結果は同じでした。

最も興味深いのは、「rownum <-666」を設定して、同じ結果が得られたことです。

結果セットにより、この条件は詳細テーブルの3行で「True」と評価されたと言えます。しかし、「内部結合」を使用すると、すべてが想定どおりになります。

rownumが-666未満になるとは想像できないため、このクエリは行を返しません:-)

さらに、外部結合にoracle構文を使用する場合、「(+)」を使用するとすべてがうまくいきます。

このクエリは行も返しません。

誰かが私に、アウタージョインとローナムで私が誤解していることを教えてもらえますか?