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