sql >> Database >  >> RDS >> Sqlserver

Zijn deze twee vragen hetzelfde - GROUP BY vs. DISTINCT?

Je voorbeeld #2 zorgde ervoor dat ik me een tijdje op mijn hoofd krabde - ik dacht bij mezelf:"Je kunt niet DISTINCT een enkele kolom, wat zou dat betekenen?" - totdat ik me realiseerde wat er aan de hand was.

Wanneer je

. hebt
SELECT DISTINCT(t.ItemNumber)

jij bent niet , ondanks de schijn, eigenlijk vragen om verschillende waarden van t.ItemNumber ! Uw voorbeeld #2 wordt eigenlijk hetzelfde geparseerd als

SELECT DISTINCT
  (t.ItemNumber)
  ,
  (SELECT TOP 1 ItemDescription
   FROM Transactions
   WHERE ItemNumber = t.ItemNumber
   ORDER BY DateCreated DESC) AS ItemDescription
FROM Transactions t

met syntactisch correcte maar overbodige haakjes rond t.ItemNumber . Het is voor de resultaatset als geheel dat DISTINCT van toepassing.

In dit geval, aangezien uw GROUP BY groepen per kolom die daadwerkelijk varieert, krijgt u dezelfde resultaten. Het verbaast me eigenlijk een beetje dat SQL Server dat niet doet (in de GROUP BY voorbeeld) aandringen dat de kolom met subquery's wordt vermeld in de GROUP BY lijst.



  1. Waarom levert een geparametriseerde query een veel langzamer queryplan op dan een niet-geparametriseerde query?

  2. bewaar postgresql-resultaat in bash-variabele

  3. Gebruik MySQL ruimtelijke extensies om punten binnen een cirkel te selecteren

  4. KML-bestand laden in mysql / xpath en x quires