0

このクエリを理解できません:

SELECT FIELD1 FROM TABLE1 T1
WHERE 3 = (
    SELECT COUNT(FIELD1)
    FROM TABLE1 T2
    WHERE T2.FIELD1 <= T1.FIELD1
);

このクエリはエラーなしで適切に実行されています。内部カウント クエリは結果を 363 として返します。where 句に入力すると、3 = (select..1 つの結果が得られます。私が置く4=(select..と、レコードは来ません。私が置く363 = (select...と、3つのレコードが来ます。

私はこれと混乱しています。これを理解するのを手伝ってください。

4

2 に答える 2

0

クエリは、where 句のリテラル番号を表すwhereの値によって暗示された順序に関して、下位nレコードで構成される結果セットを生成します。クエリに対する空でない結果セットは、比較基準を満たす正確なタプルがあることも表明します。table1field1nn

nしたがって、ランクを明確に発行できる場合、トーナメントで th ランクの占有者を計算します。

例:

トーナメントの結果を次のように想像してください。

  1. スクービードゥー
  2. ドナルドダック
  3. ミッキーマウス
  4. カルビン
    ・ホッブズ

  6. ミニーマウス ...

363.誰でも

このランキングは結果と互換性があります (もちろん、クエリを使用して上位の出場者を決定する必要があるため、calvin & hobbes のランクを 5 ではなく 4 とラベル付けするのが一般的ですn)。

于 2013-08-01T10:54:39.857 に答える