SQL 계산에서의 에일리어스 사용
이 쿼리가 작동하지 않는 이유는 무엇입니까?
SELECT 10 AS my_num, my_num*5 AS another_number
FROM table
이 예에서는 다른 계산에서 my_num 에일리어스를 사용하려고 합니다.이로 인해 알 수 없는 열 "my_num"이 발생합니다.
이것은 제가 하려고 하는 것을 간략화한 것입니다만, 기본적으로는 에일리어스를 사용하여 다른 계산을 하고 싶습니다.내 계산은 훨씬 더 복잡하기 때문에 나는 그것을 여러 번 반복하기 때문에 별명을 짓는 것이 좋을 것이다.
재사용된 에일리어스를 다음과 같이 랩핑하기만 하면 됩니다.(SELECT alias)
:
SELECT 10 AS my_num,
(SELECT my_num) * 5 AS another_number
FROM table
그런 식으로 별칭을 사용하려면 하위 선택을 사용해야 합니다.
SELECT my_num*5 AS another_number FROM
(
SELECT 10 AS my_num FROM table
) x
sql의 에일리어스는 프로그래밍 언어의 변수와 다릅니다.에일리어스는 특정 포인트(특히 에서)에서만 다시 참조할 수 있습니다.GROUP BY
그리고.HAVING
절)을 참조해 주세요.하지만 에일리어스를 재사용할 수 없습니다.SELECT
절을 클릭합니다.따라서 기본적으로 열 이름을 변경하거나 계산된 열의 이름을 지정할 수 있는 파생 쿼리(Rubens Farias에서 제안한 쿼리 등)를 사용할 수 있습니다.
또는 를 사용할 수 있습니다.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/perl과 같은 경우에 편리할 수 있습니다.
my $my_num = 10;
my $query = "SELECT $my_num AS my_num, $my_num * 5 AS another_number FROM table";
"또 다른 옵션은 APPLY 연산자를 사용하는 것입니다.
SELECT my_num, my_num*5 AS another_number
FROM table
CROSS APPLY
(SELECT 5 AS my_num) X
언급URL : https://stackoverflow.com/questions/2077475/using-an-alias-in-sql-calculations
'itsource' 카테고리의 다른 글
Larabel의 엔진 옵션 InnoDB로 인덱스 크기 제한을 피할 수 있는 이유는 무엇입니까? (0) | 2022.10.05 |
---|---|
두 마커 사이의 서브스트링을 추출하려면 어떻게 해야 합니까? (0) | 2022.10.05 |
URL에서 파일 이름 가져오기 (0) | 2022.09.30 |
어레이를 루프하여 아이템 삭제(루프 중단 없음) (0) | 2022.09.30 |
여러 DB 결과를 사용하여 MySQL replace를 선택 항목으로 실행하여 교착 상태 발생 (0) | 2022.09.30 |