[SQL공부]테이블 여러개로 self join 해보기

allnight5·2023년 7월 4일
0

아직 하는중 내일 다시 수정해볼 예정
온라인 sql사이트

CREATE TABLE mysql_test_a ( 
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(30), 
mento VARCHAR(30)
); 

CREATE TABLE mysql_test_b ( 
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(30) , 
duty VARCHAR(30) 
); 


INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('1', 'John', 'Cat'); 

INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('2', 'Don', 'Pu'); 

INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('3', 'Cat', null); 

INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('4', 'Pu', 'Hong'); 

INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('5', 'Hong', 'End'); 

INSERT INTO `mysql_test_a` (`id`, `name`, `mento`) 
VALUES ('6', 'End', null); 

INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('1', 'John', 'manager'); 

INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('2', 'Don', 'manager'); 

INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('3', 'Cat', 'deputy'); 

INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('4', 'Pu', 'chief'); 
INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('5', 'Hong', 'deputy'); 

INSERT INTO `mysql_test_b` (`id`, `name`, `duty`) 
VALUES ('6', 'End', 'chief'); 

sql 쿼리문

SELECT a.name, b.duty, a.mento, b2.duty 
AS mentoDuty
FROM mysql_test_a a
JOIN mysql_test_b b 
    ON a.name = b.name
LEFT JOIN mysql_test_b b2 
ON a.mento = b2.name

결과물

mysql_test_a 테이블과 mysql_test_b 테이블을 조인하여 name 열을 기준으로 매칭된 레코드를 반환합니다.
왼쪽 조인(LEFT JOIN)을 사용하여 mysql_test_a 테이블의 mento 열과 mysql_test_b 테이블의 name 열을 매칭하여 mentoDuty를 가져옵니다.
만약 mento가 NULL인 경우, mentoDuty도 NULL로 표시됩니다.

profile
공부기록하기

0개의 댓글