Выходные столбцы являются видимыми в пункте в ORDER BY
или GROUP BY
, потому что те, которые применяются после оценивая выражения в предложении SELECT
. Они не видно в WHERE
или HAVING
статья. Таким образом, вы не можете ссылаться на вывод , имя столбца year
. Вам нужно будет повторить выражение, основанное на столбцах . Очевидно, что есть входной столбец с тем же именем или вы получите исключение. Реквизиты:
Для вашего запроса, чтобы быть быстро, вы должны достаточно использовать sargable предикат:
SELECT EXTRACT(YEAR FROM pub_date) AS year
FROM news_stories
WHERE pub_date >= '2010-1-1'::date;
Это, как правило, быстрее, потому что Postgres может сравнить значения в pub_date
до данного значения напрямую, без извлечения года из каждой строки firs т.
. Более того, простой индекс на pub_date
может использоваться таким образом - если Postgres ожидает, что маршрут будет быстрее (только для сканирования по индексу или достаточно избирательного).
спасибо. Я думал, что одной из главных целей AS было укоротить некоторые из этих операторов SQL, например, как я их написал. –
@DanGoodspeed ALIASES можно использовать для создания ** временного ** имени для столбцов или таблиц. Если вы хотите использовать имя псевдонима в 'where Clause', тогда проверьте ответ Gordan. –