sql >> Database teknologi >  >> RDS >> Mysql

MySQL:hvorfor virker denne maks. N medlemmer pr. gruppeforespørgsel?

Den korrelerede underforespørgsel returnerer antallet af personer med samme land og et højere id. Så hvis du sammenligner det med < 2 du vil kun vælge de to højeste id'er for hvert land. Du kan få en bedre idé om dette ved at se på resultaterne af at vælge underforespørgslen i stedet for at bruge den som en begrænsning:

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=9c3cfe469dd299b3160d09e97e73e499">https://dbfiddle.uk/?rdbms=9c3cfe469dd299b3160d09e97e73e499">https://dbfiddle.uk/?rdbms=9c3cfe469dd29edddbms=9c3cfe469dd29e7e73e499">https://dbfiddle.uk/?rdbms=9c3cfe469d29edd9c3cfddle_49e9dd

Bemærk, at medmindre der er optimeringer, der specifikt leder efter dette mønster, hvilket jeg meget tvivler på, vil denne forespørgsel være O(N^2).



  1. PHP:Ingen php.ini-fil

  2. Identity Entity Framework Library - Opdater database [MySQL]

  3. Find en værdi hvor som helst i en database

  4. Korrekt håndtering af lange data i Hibernate