Search
Duplicate

Filter on alias 기능

문서번호 : 11-284355

Document Information

최초 작성일 : 2022.05.11
최종 수정일 : 2022.05.20
이 문서는 아래 버전을 기준으로 작성되었습니다.
SinglestoreDB : 7.8

Goal

SingleStore DB 에서 제공하는 Filter on alias 기능에 대한 이해

Solution

1.
정의
SingleStore DB는 표준 SQL의 문법과 순서를 따릅니다. 이에 더해, SELECT list에서 정의된 alias를 WHERE 절 등에 참조 할 수 있도록 허용합니다. 또한, alias를 제거해도 모호성이 생성되지 않는다고 가정하면, 하위 쿼리에는 alias가 필요하지 않습니다 이러한 기능은 Sybase IQ, Redshift 및 기타 일부 데이터베이스 제품과 유사합니다.
2.
예시
컬럼 표현식은 컬럼 alias 를 참조할 수 있습니다. 아래의 쿼리는 ‘c’ alias 를 참조하여, ‘c+10’ 컬럼 표현식으로 사용한 예제입니다.
SELECT a + b as c, c + 10 FROM t;
SQL
복사
Where 절은 컬럼 alias 를 참조할 수 있습니다. 아래의 쿼리는 ‘c’ alias 를 참조하여, Where 절에 ‘c’ alias를 사용한 예제입니다.
SELECT a + b as c FROM t WHERE c < 100;
SQL
복사
Having 절은 컬럼 alias 를 참조할 수 있습니다. 아래의 쿼리는 ‘b’ alias 를 참조하여, Having 절에 ‘b’ alias 를 사용한 예제입니다. Having 절에 alias 필터링은 SingleStore DB 7.3 버전에서도 가능합니다.
SELECT a + 50 as b, COUNT(*) FROM t GROUP BY a HAVING b < 1000;
SQL
복사
모호성이 생성되지 않는다고 가정할 때, alias 제거한 예제입니다.
SELECT a, * from t;
SQL
복사
3.
고려 사항
SingleStore는 select list 에 중복된 column 이름과 중복된 alias를 정의하거나, 중복된 alias 를 허용합니다. 그렇지만, filter-on-alias 동작시, SQL 작성자의 직관적인 생각과 다른 동작을 불러올 수 있어 이런 형태의 구문은 피할 것을 권장합니다.
아래 구문이 실행 가능하더라도, 이를 Common Table Expression 또는 inline view로 전환할 경우 컬럼 구분이 불가능해 ‘Error 1060 - Duplicate column name’ 일 발생하게됩니다. 현재 7.6에서 실행 가능하지만, 코드 변경으로 동작 변경 될 수 있습니다.
select 0 as c, c.c from (select a/b as c, t.* from t1 t where c > 1) c where c > 1 ;
SQL
복사

References

1.
select

History

일자
작성자
비고
2022.05.11
wee
신규
2022.05.20
jnshin
고려사항 편집