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

Hvilken rækkes felter returneres ved gruppering med MySQL?

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.



  1. Søgefiltrering med PHP/MySQL

  2. MySQL:Brug CASE/ELSE-værdi som join-parameter

  3. Udskriv rang fra sum i PHP &MySQL i 1,1,3,4 osv. rækkefølge

  4. Sådan importeres og eksporteres en MySQL-database