PostgreSQL 쿼리의 ORDER BY 절에서 별칭을 활용하려고 하면 일부 사용자에게 "열" 오류가 발생합니다. 존재하지 않습니다."
다음 예를 고려하십시오.
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY global_stock = 0, title;
PostgreSQL 8.1.23에서 이 쿼리를 실행하면 "'global_stock' 열이 존재하지 않습니다."라는 오류가 발생합니다. 이 오류는 ORDER BY 절에서 별칭을 인식하지 못하기 때문에 발생합니다.
두 가지 해결 방법이 있습니다:
1. 숫자 순서:
별칭을 사용하는 대신 SELECT 절의 위치로 열을 참조할 수 있습니다. 위 예에서 'global_stock' 별칭은 열 2에 해당합니다. 따라서 수정된 쿼리는
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY 2, 1;
2가 됩니다. CASE 표현식을 사용한 하위 쿼리:
또 다른 옵션은 하위 쿼리와 CASE 표현식을 사용하는 것입니다.
SELECT * FROM ( SELECT title, (stock_one + stock_two) AS global_stock FROM product ) x ORDER BY (CASE WHEN global_stock = 0 THEN 1 ELSE 0 END) DESC, title;
이 경우 CASE 표현식은 다음이 포함된 행에 값 1을 할당합니다. 'global_stock' = 0, 그 외 모든 것에는 0입니다. 그런 다음 쿼리는 이 값을 기준으로 결과를 내림차순으로 정렬하여 사용 가능한 항목의 우선순위를 효과적으로 지정합니다.
위 내용은 '열이 존재하지 않습니다' 오류가 발생하지 않고 PostgreSQL ORDER BY 절에서 별칭을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!