La DISTINCT agisce sugli elementi che selezioni (la coppia se ne selezioni due, il singolo se uno, e cosi` via).
Quindi nell'esempio che hai fatto la query seleziona le coppie senza ripeterle.
Sul fatto che il group by sia uguale al distinct, ho qualche rimostrnza.
Potrebbe dare gli stessi risultati in alcuni e banali casi.
Con il distinct selezioni gli elementi distinti di un elenco.
Con il group by raggruppi gli elementi di un elenco per un determinato campo.
Se prendiamo il tuo esempio:
Select Distinct owner from pet
seleziona :
con il group by puoi ad esempio contare le occorrenzecodice:| owner | +--------+ | Harold | | Gwen | | Benny | | Diane |
Select owner, count(*) from pet group by pet
seleziona:
o magaricodice:| owner | count(*) +--------+-------- | Harold | 2 | Gwen | 3 | Benny | 2 | Diane | 2
Select owner, count(*) from pet group by pet having count>2
seleziona:
Se il group by viene utilizzato solo per selezionare elementi distinti di un elenco allora le performance della query calano,rispetto alla distinct, soprattutto in basi di dati con molti record.codice:| owner | count(*) +--------+-------- | Gwen | 3
Infatti in questi casi e` preferibile utilizzare distinct che e` molto piu` performante.
Spero di essere stato abbastanza chiaro

Rispondi quotando