Обикновено всички селекции са във формата 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.