2016-12-01 12 views
1

に私はそれだけで毎秒行を選択句を追加したい隠すROW_NUMBER()サブクエリ

Select * 
From y 
WHERE y.z = (
SELECT a, (adding rownumber here) 
FROM b 
) 

ようなクエリを持っています。これを行うには、副問合せにrow_number()を追加し、rownumber%2 = 0の節を持つ必要があります。

私の質問は、副照会の選択にrownumberを追加することができます。それはクエリに影響しません

+1

MySQLには、組み込みの 'ROWNUM'機能がありません。 –

+1

サブクエリは、必要なフィールドのみを選択する別のクエリでネストすることができます。とにかく必要になるかもしれません(MySQLで「行番号」を作成するのに見られる最も一般的な方法は、クエリ内の異なる句にまたがって使用されると予想外に動作するセッション変数です)。 – Uueerdo

答えて

1

MySQLでのRownumberingは、首に悪名高い痛みです。

あなたはこのようにMySQLの行に番号を付けることができます。

ここでORDER BY句を忘れないでください。明示的な順序付けがなければ、クエリエンジンは返す行の順序を自由にランダム化できます。

次に、この混乱をサブクエリとして使用し、rownumで処理します。あなたがrownumbersを表示したくない場合は

SELECT * 
    FROM (
       SELECT (@rownum := @rownum+1) rownum, b.* 
       FROM b 
       JOIN (SELECT @rownum := 0) init 
       ORDER BY b.whatever 
     ) table_with_rownum 
    WHERE rownum % 2 = 0 

、あなたのSELECTSELECT *からSELECT col, col, colに変更し、rownumを除外。