복붙노트

[SQL] SQL 계산에서 별칭을 사용하여

SQL

SQL 계산에서 별칭을 사용하여

되지 않는 이유는이 쿼리를 사용할 수 있습니까?

SELECT 10 AS my_num, my_num*5 AS another_number
FROM table

이 예제에서는 다른 계산에 my_num 별칭을 사용하는 것을 시도하고있다. 알 수없는 열 "my_num"이러한 결과

이것은 내가 할 노력하고 있지만, 기본적으로 내가 다른 계산을 할 때의 별명을 사용하고자하는 무엇의 단순화 된 버전입니다. 내 계산은 훨씬 더 복잡하고 내가 여러 번 다른 방법을 반복하기 때문에 그게 전부는 왜 별칭을 것이 좋을 것이다.

해결법

  1. ==============================

    1.간단하게 (SELECT 별칭)로 재사용 별칭을 포장 :

    간단하게 (SELECT 별칭)로 재사용 별칭을 포장 :

    SELECT 10 AS my_num, 
           (SELECT my_num) * 5 AS another_number
    FROM table
    
  2. ==============================

    2.당신은 그 별명 방법으로 그것을 사용하기 위해 부속을 사용해야합니다

    당신은 그 별명 방법으로 그것을 사용하기 위해 부속을 사용해야합니다

    SELECT my_num*5 AS another_number FROM
    (
        SELECT 10 AS my_num FROM table
    ) x
    
  3. ==============================

    3.SQL의 별칭은 프로그래밍 언어의 변수처럼되지 않습니다. 별칭은 다시 특정 지점에서 (특히 GROUP BY 및 HAVING 절에) 참조 할 수 있습니다. 하지만 당신은 SELECT 절에 별칭을 다시 사용할 수 없습니다. 당신은 당신이 기본적으로 당신의 열 이름을 변경 및 / 또는 계산 된 열 이름을 할 수 있습니다 (루벤스 파리 아스 제안 등) 파생 쿼리를 사용할 수 있습니다.

    SQL의 별칭은 프로그래밍 언어의 변수처럼되지 않습니다. 별칭은 다시 특정 지점에서 (특히 GROUP BY 및 HAVING 절에) 참조 할 수 있습니다. 하지만 당신은 SELECT 절에 별칭을 다시 사용할 수 없습니다. 당신은 당신이 기본적으로 당신의 열 이름을 변경 및 / 또는 계산 된 열 이름을 할 수 있습니다 (루벤스 파리 아스 제안 등) 파생 쿼리를 사용할 수 있습니다.

    수식은 일반적으로 고정하는 경우 또는 당신은 VIEW를 사용할 수 있습니다

    CREATE VIEW table10 AS SELECT 10 AS my_num FROM table;
    SELECT my_num * 5 AS another_number FROM table10;
    

    나는 약간 빠른 파생 쿼리를 사용하는 것보다이 될 것으로 예상하지만, 아마도 당신의 진짜 쿼리에 많이 의존한다.

    또는 당신은 일을 복제 할 수 있습니다 :

    SELECT 10 AS my_num, 10 * 5 AS another_number FROM table;
    

    PHP / 펄 같은에서 편리 할 수있는 :

    my $my_num = 10;
    my $query = "SELECT $my_num AS my_num, $my_num * 5 AS another_number FROM table";
    
  4. ==============================

    4.``또 다른 옵션은이 연산자를 적용 사용하는 것입니다

    ``또 다른 옵션은이 연산자를 적용 사용하는 것입니다

    SELECT my_num, my_num*5 AS another_number
    FROM table
    CROSS APPLY 
    (SELECT 5 AS my_num) X
    
  5. from https://stackoverflow.com/questions/2077475/using-an-alias-in-sql-calculations by cc-by-sa and MIT license