sql >> Databasteknik >  >> RDS >> Sqlserver

Är dessa två frågor samma - GROUP BY vs. DISTINCT?

Ditt exempel #2 fick mig att klia mig i huvudet ett tag - jag tänkte för mig själv:"Du kan inte DISTINCT en enda kolumn, vad skulle det betyda?" - tills jag insåg vad som pågår.

När du har

SELECT DISTINCT(t.ItemNumber)

du är inte , trots utseende, frågar faktiskt efter distinkta värden av t.ItemNumber ! Ditt exempel #2 tolkas faktiskt på samma sätt som

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

med syntaktiskt korrekta men överflödiga parenteser runt t.ItemNumber . Det är för resultatuppsättningen som helhet som DISTINCT gäller.

I det här fallet, eftersom din GROUP BY grupperar efter kolumnen som faktiskt varierar, får du samma resultat. Jag är faktiskt lite förvånad över att SQL Server inte gör det (i GROUP BY exempel) insistera på att den undersökta kolumnen nämns i GROUP BY lista.



  1. Gå med i en rad från en tabell i MySQL

  2. Infoga data i tabellen med resultat från en annan urvalsfråga

  3. Hur optimerar jag ett bord på 9 GB om disken har väldigt lite ledigt utrymme?

  4. Docker:Drupal-behållare kopplad till mysql-behållare kan inte ansluta till mysql under Drupal-installation