Задавате два въпроса:
1.
Защо не мога да се позова на псевдонима на разходите SELECT в клаузата WHERE?
2.
Но защо да поръчвате по разход; е позволено?
Ръководството има отговор и за двете тук:
Името на изходна колона може да се използва за препращане към стойността на колоната в
ORDER BY
иGROUP BY
клаузи, но не и вWHERE
илиHAVING
клаузи; там трябва да напишете израза вместо това.
Дефинира се от стандарта SQL и причината е последователността от събития в SELECT
запитване. В момента WHERE
се прилагат клаузи, извеждат колони в SELECT
списъкът все още не е изчислен. Но когато става дума за ORDER BY
, изходните колони са лесно достъпни.
Така че макар това да е неудобно и объркващо в началото, все пак има смисъл.
Свързано:
- Условие за отчитане на PostgreSQL Where
- Най-добрият начин да получите резултат, преди да бъде приложен LIMIT