>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL의 ORDER BY 절에서 별칭을 올바르게 사용하는 방법은 무엇입니까?

PostgreSQL의 ORDER BY 절에서 별칭을 올바르게 사용하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-31 13:32:11997검색

How to Correctly Use Aliases in PostgreSQL's ORDER BY Clause?

PostgreSQL: ORDER BY에서 ALIAS를 사용하여 결과 정렬

PostgreSQL에서 ORDER BY 절에 별칭을 사용하면 문제가 발생할 수 있습니다. 제공된 쿼리에서 볼 수 있듯이 ORDER BY에서 별칭을 직접 참조하면 오류 메시지가 발생할 수 있습니다.

오류 설명:

PostgreSQL에서는 ORDER BY 절 참조가 필요합니다. 결과 집합에 존재하는 열입니다. 이 쿼리에서 별칭 "global_stock"은 최종 결과 집합의 열과 일치하지 않으므로 오류가 발생합니다.

해결책:

두 가지 접근 방식이 있습니다. 이 문제를 해결하려면:

방법 1: SELECT 재정렬 목록:

별칭이 두 번째(또는 후속) 표현식으로 표시되도록 SELECT 목록의 순서를 변경합니다. 다음 쿼리가 작동합니다.

SELECT
    title,
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    2, 1;

이 순서를 다시 지정하면 별칭이 ORDER BY 절에서 올바르게 참조됩니다.

방법 2: 하위 쿼리 사용:

원래 선택을 래핑하는 하위 쿼리를 만들고 외부 쿼리의 ORDER BY에 별칭을 사용합니다. 조항. 예:

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"이 중첩된 SELECT 문 내에서 사용되며 중첩된 결과 집합은 외부 쿼리에서 정렬됩니다.

위 내용은 PostgreSQL의 ORDER BY 절에서 별칭을 올바르게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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