Hvilket id vil blive returneret (1, 2 eller 3)?
A:Serveren vil vælge for alle de poster, der har samme navn det id, den ønsker (sandsynligvis det hurtigste at hente, hvilket er uforudsigeligt). For at citere den officielle dokumentation:
Meget mere information i dette link .
Hvilket id skal denne forespørgsel til BESTIL EFTER (Samme som returneres? ... se spørgsmål 1)?
Det giver ingen mening at finde ud af, i hvilken rækkefølge de hentede data vil blive returneret, da du ikke kan forudsige det resultat, du vil få. Det er dog meget sandsynligt, at du får resultatet sorteret efter den uforudsigelige ID-kolonne.
Kan du kontrollere, hvilket id der returneres/bruges til bestilling? for eksempel. Returner det største id eller det første id fra en GRUPPE.
Du bør gå ud fra på dette tidspunkt, at du ikke kan. Læs dokumentationen igen.
Gør tingene endnu mere klare:Du kan ikke forudsige resultatet af en ukorrekt brugt GROUP BY-klausul. Hovedproblemet med MySQL er, at det giver dig mulighed for at bruge det på en ikke-standard måde, men du skal vide, hvordan du bruger den funktion. Hovedpointen bag det er at gruppere efter felter, som du ved altid vil være de samme. F.eks.:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
Her kender du name
vil være unik som id
bestemmer funktionelt name
. Så resultatet du kender er gyldigt. Hvis du også grupperede efter navn, ville denne forespørgsel være mere standard, men den vil fungere lidt dårligere i MySQL.
Som en sidste bemærkning, tag i betragtning, at efter min erfaring er resultaterne i disse ikke-standardforespørgsler for de valgte og ikke-grupperede felter normalt dem, du ville få ved at anvende en GROUP BY
og derefter en ORDER BY
på den mark. Derfor ser det så mange gange at arbejde. Men hvis du bliver ved med at teste, vil du i sidste ende finde ud af, at dette sker 95 % af tiden. Og du kan ikke stole på det tal.