Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

sql група по спрямо различна

GROUP BY съпоставя групи от редове в един ред, за отделна стойност в конкретна колони, които дори не е задължително да са в списъка за избор.

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

Тази заявка е законен SQL (корекция: само в MySQL; всъщност не е стандартен SQL и не се поддържа от други марки). MySQL го приема и вярва, че знаете какво правите, избирайки b , c и d по недвусмислен начин, защото те са функционални зависимости на a .

Въпреки това, Microsoft SQL Server и други марки не позволяват тази заявка, тъй като тя не може да определи лесно функционалните зависимости. редактиране: Вместо това стандартният SQL изисква от вас да следвате Правилото за една стойност , т.е. всяка колона в списъка за избор трябва или да бъде именувана в GROUP BY клауза или в противен случай да бъде аргумент на функция за набор.

Докато DISTINCT винаги разглежда всички колони в списъка за избор и само тези колони. Често срещано погрешно схващане е, че DISTINCT ви позволява да посочите колоните:

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

Въпреки скобите, които правят DISTINCT изглежда като извикване на функция, не е така. Това е опция за заявка и отделна стойност в някое от трите полета на списъка за избор ще доведе до отделен ред в резултата от заявката. Един от изразите в този списък за избор има скоби около него, но това няма да повлияе на резултата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разберете към кой дял ще бъде съпоставена дадена стойност в SQL Server (T-SQL)

  2. Разгръщане на сертификат за криптирана връзка SQL Server

  3. Проверете дали даден обект е съхранена процедура, като използвате OBJECTPROPERTY() в SQL Server

  4. Филтриране по опции OFFSET-FETCH в заявка за избор - SQL Server / TSQL урок, част 118

  5. 3 начина за връщане на низ от множество интервали в SQL Server