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

SELECT COUNT(*);

Обикновено всички селекции са във формата SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Тъй като това позволява обикновени скаларни изчисления, можем да направим нещо като SELECT 1 + 1 FROM SomeTable и ще върне набор от записи със стойност 2 за всеки ред в таблицата SomeTable .

Сега, ако не ни интересува никаква таблица, а просто искаме да направим нашите скаларни изчисления, може да искаме да направим нещо като SELECT 1 + 1 . Това не е разрешено от стандарта, но е полезно и повечето бази данни го позволяват (Oracle не го позволява, освен ако не е променен наскоро, поне преди не беше).

Следователно такива голи SELECT се третират така, сякаш имат клауза from, която определя таблица с един ред и без колона (невъзможно разбира се, но върши работа). Следователно SELECT 1 + 1 става SELECT 1 + 1 FROM ImaginaryTableWithOneRow който връща един ред с една колона със стойност 2 .

Най-често не мислим за това, просто свикваме с факта, че голите SELECT дават резултати и дори не мислим за факта, че трябва да има избрано нещо от един ред, за да върне един ред.

При извършване на SELECT COUNT(*) направихте еквивалента на SELECT COUNT(*) FROM ImaginaryTableWithOneRow което разбира се връща 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се създаде ред с размер 8064, който е по-голям от допустимия размер на реда 8060

  2. Защо не мога да използвам псевдоним в израза DELETE?

  3. Как да вмъкна в таблица, която определя стойност ПО ПОДРАЗБИРАНЕ за всяка колона?

  4. TSQL - създайте съхранена процедура в изявление за транзакция

  5. sql заявка - вземете всички записи въз основа на флаг