Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pogrupuj sql według versus different

GROUP BY mapuje grupy wierszy w jeden wiersz, według odrębnej wartości w określonym kolumny, które niekoniecznie muszą znajdować się na liście wyboru.

SELECT b, c, d FROM table1 GROUP BY a;

To zapytanie jest legalnym SQL (poprawka: tylko w MySQL; w rzeczywistości nie jest to standardowy SQL i nie jest obsługiwany przez inne marki). MySQL akceptuje to i ufa, że ​​wiesz, co robisz, wybierając b , c i d w jednoznaczny sposób, ponieważ są funkcjonalnymi zależnościami a .

Jednak Microsoft SQL Server i inne marki nie zezwalają na to zapytanie, ponieważ nie można łatwo określić zależności funkcjonalnych. edytuj: Zamiast tego standardowy SQL wymaga przestrzegania reguły pojedynczej wartości , tj. każda kolumna na liście wyboru musi być nazwana w GROUP BY lub być argumentem funkcji set.

Natomiast DISTINCT zawsze sprawdza wszystkie kolumny z listy wyboru i tylko te kolumny. To powszechne nieporozumienie, że DISTINCT pozwala określić kolumny:

SELECT DISTINCT(a), b, c FROM table1;

Pomimo nawiasów tworzących DISTINCT wyglądają jak wywołanie funkcji, tak nie jest. Jest to opcja zapytania, a odrębna wartość w dowolnym z trzech pól listy wyboru prowadzi do odrębnego wiersza w wyniku zapytania. Jedno z wyrażeń na tej liście wyboru jest otoczone nawiasami, ale nie wpłynie to na wynik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmodyfikuj ograniczenie CHECK w programie SQL Server za pomocą T-SQL

  2. Jak mogę określić zainstalowane instancje SQL Server i ich wersje?

  3. Jak dokumentować bazę danych SQL Server

  4. Jak przekonwertować uniksowy znacznik czasu na wartość daty/godziny w SQL Server

  5. Zwróć nazwę bieżącej stacji roboczej, która jest połączona z programem SQL Server (T-SQL)