PostgreSQL에서는 ORDER BY 절에 별칭을 사용하는 것이 까다로울 수 있습니다. 다음 쿼리를 고려하십시오.
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY global_stock = 0, title;
PostgreSQL 8.1.23에서 이 쿼리를 실행할 때 "ERROR: "global_stock" 열이 존재하지 않습니다."라는 오류가 발생합니다. 이 문제를 해결하려면 두 가지 기본 접근 방식이 있습니다.
첫 번째 접근 방식은 별칭 대신 열 번호를 기준으로 정렬하는 것입니다. 이 경우 쿼리는 다음과 같습니다.
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY 2, 1;
여기서 "2"는 별칭 "global_stock"인 두 번째 열을 나타냅니다.
다른 접근 방식은 원래 쿼리를 하위 쿼리로 래핑한 다음 하위 쿼리 내의 별칭을 기준으로 정렬하는 것입니다. 쿼리는 다음과 같습니다.
SELECT * FROM ( SELECT title, (stock_one + stock_two) AS global_stock FROM product ) AS x ORDER BY (CASE WHEN global_stock = 0 THEN 1 ELSE 0 END) DESC, title;
이 경우 별칭 "global_stock"이 하위 쿼리 내에서 사용되고 ORDER BY 절이 하위 쿼리의 결과 집합에 적용됩니다.
위 내용은 PostgreSQL의 ORDER BY 절에서 별칭을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!