LEFT JOIN ~ ON ~ 은 조건에 맞는 걸 고른 후에 LEFT 테이블에서 한 번도 안 쓰인 원소를 가져와서 RIGHT COLUMN은 NULL로 채우는 건데
LEFT JOIN ~ USING()은 동작 방식이 이해가 안 됩니다.
SELECT *
FROM
(
(
SELECT NAME, ANIMAL_TYPE
FROM ANIMAL_INS AS AI
LIMIT 37, 6
) A
LEFT JOIN
(
SELECT NAME, ANIMAL_TYPE
FROM ANIMAL_OUTS AS AO
LIMIT 37, 6
) B
ON A.NAME = B.NAME AND A.ANIMAL_TYPE = B.ANIMAL_TYPE
);
| NAME | ANIMAL_TYPE | NAME | ANIMAL_TYPE |
|---|---|---|---|
| Ceballo | Dog | Ceballo | Dog |
| Sailor | Dog | Sailor | Dog |
| April | Dog | ||
| Ella | Cat | ||
| Rosie | Dog | ||
| Dash | Dog |
SELECT *
FROM
(
(
SELECT NAME, ANIMAL_TYPE
FROM ANIMAL_INS AS AI
LIMIT 37, 6
) A
LEFT JOIN
(
SELECT NAME, ANIMAL_TYPE
FROM ANIMAL_OUTS AS AO
LIMIT 37, 6
) B
USING(NAME, ANIMAL_TYPE)
);
| NAME | ANIMAL_TYPE |
|---|---|
| Ceballo | Dog |
| Sailor | Dog |
| April | Dog |
| Ella | Cat |
| Rosie | Dog |
| Dash | Dog |
여기서 이렇게 두 라인만 출력될 거라고 생각했습니다.
| NAME | ANIMAL_TYPE |
|---|---|
| Ceballo | Dog |
| Sailor | Dog |
근데 왜 LEFT JOIN ON을 한 뒤에 RIGHT COLUMN을 버린 것 같은 결과가 나왔을까요?
https://dev.mysql.com/doc/refman/8.0/en/join.html
쿼리가 댓글로 안들어가네요? ㅠㅠ 아래 example 쪽에 select * 에 using 에 대한 내용이 있습니다
결론적으로 동일한 결과인데 COALESCE 처리가 되서 null 빼고 값이 나와서 그런거네요
감사합니다~