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
WHEREandere clausule danIS NULL/IS NOT NULLzou 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 BYniet gebruiken om het effect vanDISTINCT. te simuleren , om 2 redenen:1/ Dit is gewoon niet het doel. Een van de effecten van
GROUP BYis 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 BYookORDER BYde 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.