Nej, det er fint. Dette er blot et af de sjældne tilfælde, hvor du vil bruge DISTINCT nøgleord for at fjerne dubletter.
I dette tilfælde er dette begrundet med, at logikken i forespørgslen er korrekt, selvom den returnerer mere end én række. Mange gange kan man se brugen af DISTINCT når logikken i forespørgslen faktisk er forkert.
Sidebemærkning:
- ethvert filter på en tabelreference, du bruger i
WHEREanden klausul endIS NULL/IS NOT NULLville gøre enhverLEFT JOINpå samme tabelhenvisning vend til enINNER JOIN, hvad angår den endelige resultatopførsel. (se dette:https://stackoverflow.com/a/15483895/1291428 ) -
du bør ikke bruge
GROUP BYat simulere effekten af DISTINCT, af 2 grunde:1/ Dette er bare ikke formålet. En af effekterne af
GROUP BYer at eliminere dubletter, men dets hovedformål er at gruppere rækker efter et bestemt sæt kriterier for at anvende nogle analytiske beregninger/operationer på dem.2/
GROUP BYogsåORDER BYresultaterne (i mysql), hvilket ikke nødvendigvis er det du ønsker og i så fald bremser eksekveringen. Venligst, sørg bare for passende brug af det, motorerne leverer, det er altid bedre ud fra et synspunkt om fremadrettet kompatibilitet. (forudser, at det, du medtager som givet, faktisk ikke er det)
hilsen.