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

結果セットの行に自動番号を付けるためのPure-SQL手法

    意味のある行番号を取得するには、結果を並べ替える必要があります。次に、次のようなことを行うことができます:

    SELECT id, name
        , (SELECT COUNT(*) FROM people p2 WHERE name='Spiewak' AND p2.id <= p1.id) AS RowNumber
    FROM people p1
    WHERE name = 'Spiewak'
    ORDER BY id
    

    サブクエリのWHERE句は、WHERE句またはメインクエリの主キーと一致する必要があることに注意してくださいおよび メインクエリのORDERBY。

    SQL Serverにはこれを単純化するためのROW_NUMBER()OVER構造がありますが、MySQLにこれに対処するための特別なものがあるかどうかはわかりません。

    ここでの私の投稿が回答として受け入れられたので、Dan Goldsteinの応答も呼び出したいと思います。これは、アプローチが非常に似ていますが、サブクエリの代わりにJOINを使用し、多くの場合、パフォーマンスが向上します。



    1. MySQLクエリ-データが階層に編成されているURL名を使用してデータを識別します

    2. MariaDBでのFLOOR()のしくみ

    3. Laravel5で主キーとしてUUIDを使用する

    4. MySQLで特定のテキストを含むフィールドをクエリするにはどうすればよいですか?