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

MySQL:グループクエリごとにこの最大N個のメンバーが機能するのはなぜですか?

    相関サブクエリは、同じ国でより高いIDを持つ人の数を返します。したがって、それを< 2と比較すると 国ごとに最も高い2つのIDのみを選択します。サブクエリを制約として使用する代わりに、サブクエリを選択した結果を確認することで、これをよりよく理解できる可能性があります。

    SELECT co.id, co.person, co.country,
        (
            SELECT COUNT(*)
            FROM person ci
            WHERE  co.country = ci.country      -- controlling grouping column
            AND co.id < ci.id                       -- controlling min or max 
        ) AS higher_ids
    FROM person co
    

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9c3cfe469dd299b3160d09e97e73

    特にこのパターンを探している最適化がない限り、これは非常に疑わしいことに注意してください。このクエリはO(N ^ 2)になります。



    1. GETUTCDATE()は、同じステートメントで2回使用された場合、同じ値を返しますか?

    2. MySQL:このIPにレコードがない場合は挿入します

    3. SQLデータ定義言語

    4. Mysqliで結果を閉じるのはなぜですか