Nee, dit is prima. Dit is slechts een van de zeldzame gevallen waarin u de DISTINCT
. wilt gebruiken sleutelwoord om duplicaten te verwijderen.
In dit geval wordt dit gerechtvaardigd door het feit dat de logica van de query correct is, ook al retourneert deze meer dan één rij. Vaak zie je het gebruik van DISTINCT
terwijl de logica van de zoekopdracht feitelijk niet klopt.
Kanttekening:
- elk filter op een tabelverwijzing die u gebruikt in de
WHERE
andere clausule danIS NULL/IS NOT NULL
zou elkeLEFT JOIN
. maken op dezelfde tafel referentie draai naar eenINNER JOIN
, wat betreft het gedrag van de uiteindelijke resultaten. (zie dit:https://stackoverflow.com/a/15483895/1291428 ) -
u mag
GROUP BY
niet gebruiken om het effect vanDISTINCT
. te simuleren , om 2 redenen:1/ Dit is gewoon niet het doel. Een van de effecten van
GROUP BY
is om duplicaten te elimineren, maar het belangrijkste doel is om rijen te groeperen volgens een bepaalde reeks criteria, om er enkele analytische berekeningen/bewerkingen op toe te passen.2/
GROUP BY
ookORDER BY
de resultaten (in mysql), wat niet noodzakelijk is wat je wilt en in dat geval de uitvoering vertraagt. Zorg er alstublieft voor dat u op de juiste manier gebruik maakt van wat de motoren bieden, dat is altijd beter vanuit het oogpunt van voorwaartse compatibiliteit. (in de verwachting dat wat u opneemt als verleend, dat eigenlijk niet is)
groeten.