>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 별칭을 기준으로 정렬하고 '열이 존재하지 않음' 오류를 방지하는 방법은 무엇입니까?

PostgreSQL에서 별칭을 기준으로 정렬하고 '열이 존재하지 않음' 오류를 방지하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-22 18:09:15911검색

How to Order By an Alias in PostgreSQL and Avoid the

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.