개발을 하다보면 테이블과 VO의 이름이 동일하지 않거나

다수의 테이블을 하나의 Row로 출력해야할때 테이블 컬럼명만 다르고 데이터의 사용성이같을떄

 

AS로 컬럼명을 별칭을 정하고 출력하게된다 

 

예를들어

 

analog_book은 종이로된 책이고

digital_book은 전자책일때 

analog_book 테이블
digital_book 테이블

컬럼명이 다르지만 동일하게 보이려면 AS로 컬럼명을 변경한다

analog table은 as를 직접넣었지만 뒤에 digital_book은 주지않았다 select되는 순서에 맞춰 자동으로 변경된다.

해당 문장으로 select 해오면

union all에 의해 2개의 테이블이 하나의 테이블처럼 보이게된다.

 

이상태에서 book_name이 오라클인 경우에만 가져오게하려면 조건을 추가해야한다.

그러면 내가 아는대로 where book_name = '오라클'을 진행하면 원하는대로 값이 나올까?

 

 

깔끔하게 예상을 뒤집어엎는다. 역시 생각대로 진행되지 않는게 재미있다

 

되지않는 이유는 나의 추측이지만 

출처 : https://nive.tistory.com/148

SELECT 절에서 AS를 사용했고 ORDER BY절까지 가야 사용할수있다는건 

출처 : https://police84.tistory.com/69

실행순서에 따라 2번이 되는 WHERE에선 인식을 할수 없다는게 내 생각이다.

 

그러면 어떻게해야 AS로 변경한걸 조건으로 인식하게 할수있는것일까..?

 

서브쿼리로 감싸고 먼저진행시킨다음 조건으로 인식하게 할수있다.

 

 

서브쿼리로 먼저 AS절을 진행시키고 이후에 밖에서 AS를 조건으로 인식 시킬수있었다.

 

나는 아직도 DB를 모른다.