sql >> Databasteknik >  >> RDS >> Mysql

GROUP BY-beteende när inga aggregerade funktioner finns i SELECT-satsen

Läs MySQL-dokumentation på just denna punkt.

I ett nötskal tillåter MySQL att utelämna vissa kolumner från GROUP BY, för prestationsändamål, men detta fungerar bara om de utelämnade kolumnerna alla har samma värde (inom en gruppering), annars är värdet som returneras av frågan verkligen obestämt , som andra gissat korrekt i det här inlägget. För att vara säker på att lägga till en ORDER BY-sats skulle inte återinföra någon form av deterministiskt beteende.

Även om det inte är kärnan i problemet visar det här exemplet hur det ofta är en dålig idé att använda * istället för en explicit uppräkning av önskade kolumner.

Utdrag ur MySQL 5.0-dokumentationen:

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. Modellera en databas för registrering av försäljning. Del 1

  2. När körs SQLiteOpenHelper onCreate() / onUpgrade()?

  3. Vad behöver jag för att undvika när jag skickar en förfrågan?

  4. Hur man använder en beräknad kolumn för att beräkna en annan kolumn i samma vy