집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 별칭을 기준으로 정렬하고 '열이 존재하지 않음' 오류를 방지하는 방법은 무엇입니까?
PostgreSQL에서 별칭으로 정렬하는 방법: "열이 존재하지 않음" 오류 해결
PostgreSQL에서 별칭으로 작업할 때 결과를 주문하는 동안 오류가 발생할 수 있습니다. 예를 들어, 다음 쿼리를 고려해보세요.
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY global_stock = 0, title;
PostgreSQL 8.1.23에서 이 쿼리를 실행하면 다음 오류가 발생할 가능성이 높습니다. 쿼리 실패: ERROR: "global_stock" 열이 존재하지 않습니다. 이 오류는 "global_stock" 별칭이 "product" 테이블의 기존 열로 인식되지 않기 때문에 발생합니다.
이 문제를 해결하려면 다음과 같은 몇 가지 옵션이 있습니다.
옵션 1: 위치순 정렬
PostgreSQL에서는 열 이름 대신 열 위치순으로 정렬할 수 있습니다. 예를 들어 다음과 같이 작성할 수 있습니다.
select title, ( stock_one + stock_two ) as global_stock from product order by 2, 1
이 쿼리는 먼저 두 번째 열("global_stock")을 기준으로 결과를 정렬한 다음 첫 번째 열("title")을 기준으로 결과를 정렬합니다.
옵션 2: 하위 쿼리로 래핑
또 다른 방법은 원래 쿼리를 하위 쿼리로 래핑하는 것입니다. 하위 쿼리를 사용하고 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
이 쿼리는 먼저 "global_stock" 값을 계산하는 하위 쿼리를 생성합니다. 그런 다음 하위 쿼리는 CASE 문을 사용하여 항목의 가용성(0은 사용 가능, 1은 사용할 수 없음)에 따라 결과를 정렬하는 다른 SELECT 문으로 래핑됩니다.
위 내용은 PostgreSQL에서 별칭을 기준으로 정렬하고 '열이 존재하지 않음' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!