sql >> Databasteknik >  >> RDS >> Mysql

Vilka raders fält returneras vid gruppering med MySQL?

Vilket id kommer att returneras (1, 2 eller 3)?

S:Servern kommer att välja för alla poster som har samma namn det id den vill ha (mest troligt det snabbaste att hämta, vilket är oförutsägbart). För att citera den officiella dokumentationen:

Mycket mer information i denna länk .

Vilket id kommer denna fråga till BESTÄLL EFTER (Samma som returneras? ... se fråga 1)?

Det är ingen mening att ta reda på i vilken ordning den hämtade datan kommer att returneras eftersom du inte kan förutsäga resultatet du kommer att få. Det är dock mycket troligt att du får resultatet sorterat efter den oförutsägbara ID-kolumnen.

Kan du kontrollera vilket ID som returneras/används för beställning? t.ex. Returnera det största ID:t, eller det första ID:t från en GRUPP.

Du bör vid det här laget anta att du inte kan. Läs dokumentationen igen.

Gör saker ännu tydligare:Du kan inte förutsäga resultatet av en felaktigt använd GROUP BY-klausul. Huvudproblemet med MySQL är att det låter dig använda det på ett icke-standardiserat sätt, men du behöver veta hur du använder den funktionen. Huvudpoängen bakom det är att gruppera efter fält som du vet alltid kommer att vara desamma. T.ex.:

SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id

Här vet du name kommer att vara unik som id bestämmer funktionellt name . Så resultatet du vet är giltigt. Om du även grupperade efter namn skulle den här frågan vara mer standard men kommer att prestera något sämre i MySQL.

Som en sista anmärkning, tänk på att, enligt min erfarenhet, resultaten i dessa icke-standardiserade frågor för de valda och icke-grupperade fälten vanligtvis är de som du skulle få om du tillämpar en GROUP BY och sedan en ORDER BY på det fältet. Det är därför så många gånger det verkar att jobba. Men om du fortsätter att testa kommer du så småningom att få reda på att detta händer 95 % av gångerna. Och du kan inte lita på det numret.



  1. Hur hoppar man över kolumner i CSV-fil när man importerar till MySQL-tabell med LOAD DATA INFILE?

  2. Jag kan inte logga in på min lokala kopia av Magento -- hur använder jag förlorat lösenord med lokal kopia av programvara?

  3. RADIANS() Exempel i SQL Server

  4. mysql_fetch_array hämtar inte alla rader