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
WHERE
anden klausul endIS NULL/IS NOT NULL
ville gøre enhverLEFT JOIN
på 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 BY
at simulere effekten af DISTINCT
, af 2 grunde:1/ Dette er bare ikke formålet. En af effekterne af
GROUP BY
er 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 BY
ogsåORDER BY
resultaterne (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.