Welke id wordt geretourneerd ( 1, 2 of 3 )?
A:De server kiest voor alle records met dezelfde naam het gewenste ID (waarschijnlijk het snelst op te halen, wat onvoorspelbaar is). Om de officiële documentatie te citeren:
Veel meer informatie in deze link .
Welke id gaat deze zoekopdracht ORDER BY (zelfde als wordt geretourneerd? ... zie vraag 1)?
Het heeft geen zin om uit te zoeken in welke volgorde de opgehaalde gegevens worden geretourneerd, omdat u het resultaat niet kunt voorspellen. Het is echter zeer waarschijnlijk dat u het resultaat krijgt gesorteerd op de onvoorspelbare ID-kolom.
Kunt u bepalen welke id wordt geretourneerd/gebruikt voor het bestellen? bijv. Retourneer de grootste id, of de eerste id van een GROEP.
Je zou op dit punt moeten aannemen dat je dat niet kunt. Lees de documentatie opnieuw.
Om het nog duidelijker te maken:u kunt het resultaat van een onjuist gebruikte GROUP BY-clausule niet voorspellen. Het belangrijkste probleem met MySQL is dat je het op een niet-standaard manier kunt gebruiken, maar je moet weten hoe je van die functie gebruik kunt maken. Het belangrijkste punt hierachter is om te groeperen op velden waarvan u weet dat ze altijd hetzelfde zullen zijn. Bv:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
Hier, je kent name
zal uniek zijn als id
bepaalt functioneel name
. Dus het resultaat dat je weet is geldig. Als u ook op naam zou groeperen, zou deze zoekopdracht meer standaard zijn, maar iets slechter presteren in MySQL.
Houd er als laatste opmerking rekening mee dat, naar mijn ervaring, de resultaten in die niet-standaard zoekopdrachten voor de geselecteerde en niet-gegroepeerde velden meestal degene zijn die u zou krijgen als u een GROUP BY
toepast. en dan een ORDER BY
op dat veld. Dat is waarom het zo vaak lijkt werken. Als je echter blijft testen, kom je er uiteindelijk achter dat dit 95% van de tijd gebeurt. En op dat nummer kun je niet vertrouwen.