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

WYBIERZ LICZBA(*);

Normalnie wszystkie selekcje mają postać SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]

Ponieważ pozwala to na proste obliczenia skalarne, możemy zrobić coś takiego jak SELECT 1 + 1 FROM SomeTable i zwróci zestaw rekordów z wartością 2 dla każdego wiersza w tabeli SomeTable .

Teraz, jeśli nie obchodziła nas żadna tabela, ale po prostu chcieliśmy wykonać nasze obliczenia skalarne, moglibyśmy chcieć zrobić coś takiego jak SELECT 1 + 1 . Nie jest to dozwolone przez standard, ale jest przydatne i większość baz danych na to pozwala (Oracle nie, chyba że zostało to ostatnio zmienione, przynajmniej kiedyś nie).

Stąd takie same SELECTy są traktowane tak, jakby miały klauzulę from, która określa tabelę z jednym wierszem i bez kolumny (oczywiście jest to niemożliwe, ale to załatwia sprawę). Stąd SELECT 1 + 1 staje się SELECT 1 + 1 FROM ImaginaryTableWithOneRow co zwraca pojedynczy wiersz z pojedynczą kolumną o wartości 2 .

Przeważnie o tym nie myślimy, po prostu przyzwyczajamy się do tego, że same SELECTy dają wyniki i nawet nie myślimy o tym, że musi być wybrana jednowierszowa rzecz, aby zwrócić jeden wiersz.

Wykonując SELECT COUNT(*) zrobiłeś odpowiednik SELECT COUNT(*) FROM ImaginaryTableWithOneRow co oczywiście zwraca 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. Jak wstawić zbiorczo z rozszerzenia pliku XLSX?

  2. Zgodność SQL Server 2008 z SQL Server 2005

  3. Powody, dla których warto uaktualnić do SQL Server 2017

  4. Znalezienie podziału wiersza w ciągu tekstowym w tabeli SQL?

  5. Wydajny sposób na uzyskanie maksymalnej wartości sumy bieżącej w TSQL