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

GROUP BY-adfærd, når der ikke er nogen aggregerede funktioner i SELECT-udtrykket

Læs MySQL-dokumentation på dette særlige punkt.

I en nøddeskal tillader MySQL at udelade nogle kolonner fra GROUP BY af præstationsformål, men dette virker kun hvis de udeladte kolonner alle har samme værdi (inden for en gruppering), ellers er værdien, der returneres af forespørgslen, faktisk ubestemt , som korrekt gættet af andre i dette indlæg. For at være sikker vil tilføjelse af en ORDER BY-klausul ikke genindføre nogen form for deterministisk adfærd.

Selvom det ikke er kernen i problemet, viser dette eksempel, hvordan det ofte er en dårlig idé at bruge * frem for en eksplicit opremsning af ønskede kolonner.

Uddrag fra MySQL 5.0 dokumentation:

When using this feature, all rows in each group should have the same values
for the columns that are omitted from the GROUP BY part. The server is free
to return any value from the group, so the results are indeterminate unless
all values are the same. 


  1. FEJL 1044 (42000):Adgang nægtet for brugeren ''@'localhost' til databasen 'db'

  2. Sådan øges maksimale forbindelser i PostgreSQL

  3. UPPER() Funktion i Oracle

  4. MySQL JOIN kun den seneste række?