No, va bene. Questo è solo uno dei rari casi in cui vuoi usare il DISTINCT
parola chiave per rimuovere i duplicati.
In questo caso ciò è giustificato dal fatto che la logica della query è corretta, anche se restituisce più di una riga. Molte volte si può vedere l'uso di DISTINCT
quando effettivamente la logica della query è sbagliata.
Nota a margine:
- qualsiasi filtro su un riferimento di tabella che stai utilizzando in
WHERE
clausola diversa daIS NULL/IS NOT NULL
farebbe qualsiasiLEFT JOIN
su questa stessa tabella si fa riferimento a unINNER JOIN
, come per il comportamento del set di risultati finale. (vedi questo:https://stackoverflow.com/a/15483895/1291428 ) -
non dovresti usare
GROUP BY
per simulare l'effetto diDISTINCT
, per 2 motivi:1/ Questo non è lo scopo. Uno degli effetti di
GROUP BY
è eliminare i duplicati, ma il suo scopo principale è raggruppare le righe secondo un determinato insieme di criteri, al fine di applicare su di esse alcuni calcoli/operazioni analitiche.2/
GROUP BY
ancheORDER BY
i risultati (in mysql), che non è necessariamente quello che vuoi e in tal caso rallenta l'esecuzione. Per favore, assicurati solo un uso appropriato di ciò che forniscono i motori, è sempre meglio dal punto di vista della compatibilità futura. (anticipando che ciò che includi come concesso in realtà non lo è)
saluti.