MYSQL은 FULL OUTER JOIN이 없다고?

SQL 코딩테스트 보는데 당황했던 것이 LEFT OUTER JOIN, RIGHT OUTER JOIN은 되는데

 

FULL OUTER JOIN이 안되더라고

 

대신 FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합이므로, UNION을 이용해 다음과 같이 구현 가능하다.

 

SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.id

UNION

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.id;

 

 

이것도 시도하긴 했는데 에러나더라고

 

왜 에러나나 봤더니 

 

SELECT *
FROM table1
LEFT JOIN table2 ON table1.id = table2.id; ### 여기에 ;을 쓰면 에러남

UNION

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.id;

 

 

첫번째 쿼리에 ;으로 끝내버리니까, UNION이 단독 문장이라고 생각해서 에러나나봐

 

 

 

코딩테스트 연습 - 보호소에서 중성화한 동물 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

정답은 아니고 그냥 테스트용으로 골라봄

 

-- 코드를 입력하세요
SELECT * from animal_ins left outer join animal_outs 
on animal_ins.animal_id = animal_outs.animal_id

union

SELECT * from animal_ins right outer join animal_outs 
on animal_ins.animal_id = animal_outs.animal_id;

 

 

잘 나오긴 하는듯?

 

 

 

 

첫번째 쿼리에 ;으로 끝내버리면 에러가 발생함

 

 

 

 

 

참고로 union을 할려면 두 테이블의 칼럼개수가 일치해야함

 

결과는 첫번째 테이블에서 명시한 칼럼명을 따름

 

 

 

 

근데 되도록이면 두 테이블의 칼럼이 서로 일치하는게 좋다

 

왜냐하면 칼럼이 일치하지 않으면..

 

 

 

 

이렇게 datetime에 이름이 들어가고... 값이 뒤섞임

 

 

 

728x90