Quale ID verrà restituito ( 1, 2 o 3 )?
R:Il server sceglierà per tutti i record che hanno lo stesso nome l'ID desiderato (molto probabilmente il più veloce da recuperare, il che è imprevedibile). Per citare la documentazione ufficiale:
Molte più informazioni in questo link .
Quale ID sta per inviare questa query a ORDER BY (come viene restituito? ... vedi domanda 1)?
Non ha senso scoprire in quale ordine verranno restituiti i dati recuperati poiché non è possibile prevedere il risultato che otterrai. Tuttavia, è molto probabile che il risultato venga ordinato in base alla colonna ID imprevedibile.
Puoi controllare quale ID viene restituito/utilizzato per l'ordine? per esempio. Restituisce l'ID più grande o il primo ID di un GRUPPO.
Dovresti presumere a questo punto che non puoi. Rileggi la documentazione.
Rendere le cose ancora più chiare:non è possibile prevedere il risultato di una clausola GROUP BY utilizzata in modo improprio. Il problema principale con MySQL è che ti consente di usarlo in un modo non standard, ma devi sapere come utilizzare quella funzionalità. Il punto principale dietro è raggruppare per campi che sai saranno sempre gli stessi. ES:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
Qui conosci name
sarà univoco come id
determina funzionalmente name
. Quindi il risultato che conosci è valido. Se raggruppassi anche per nome questa query sarebbe più standard ma funzionerà leggermente peggio in MySQL.
Come nota finale, tieni presente che, nella mia esperienza, i risultati in quelle query non standard per i campi selezionati e non raggruppati sono solitamente quelli che otterresti applicando un GROUP BY
e poi un ORDER BY
su quel campo. Ecco perché così tante volte sembra lavorare. Tuttavia, se continui a testare, alla fine scoprirai che ciò accade il 95% delle volte. E non puoi fare affidamento su quel numero.