sql >> データベース >  >> RDS >> Oracle

Oracleのテーブルから偶数レコードを選択する方法は?

    次の理由で機能していません:最初の行のROWNUM 1です この場合、MOD(ROWNUM,2) 1です そしてあなたのWHERE ステートメントはMOD(ROWNUM,2)=0です 次に、これは1=0に減少します 行は破棄されます。次に、後続の行がROWNUMに対してテストされます。 of 1(前の行は出力に含まれず、行番号がないため)。これもテストに失敗し、破棄されます。繰り返して、悪意を持って、すべての行がWHEREに失敗します テストして破棄されます。

    WHERE MOD(ROWNUM,2)=1を使用して、この方法で奇数行を取得しようとした場合 その後、最初の行のみが返され、2番目以降の行はテストに失敗し、クエリに含まれることはありません。

    Vijaykumar Hadalgiが示唆しているように、サブクエリでROWNUMを選択し(where句を指定せずにすべての行に番号を付けて制限することができます)、外部クエリでテストを実行して行を制限する必要があります。

    SELECT ename, job
    FROM   (
      SELECT ename,
             job,
             ROWNUM AS row_id             -- Generate ROWNUM second.
      FROM   (
        SELECT ename, job
        FROM   Emp
        ORDER BY ename                    -- ORDER BY first.
      )
    )
    WHERE  MOD( row_id, 2 ) = 0;          -- Filter third.
    

    SQLFIDDLE



    1. ユーザーアカウントの管理、役割、権限、認証PHPおよびMySQL-パート5

    2. CloudSQLからAWSRDSへのMySQLデータベースの移行

    3. T-SQLで数値をコンマでフォーマットするにはどうすればよいですか?

    4. Neo4j-Cypherを使用してMATCHでデータを選択する