Server/DB

MySQL) Full Outer Join

Juzdalua 2022. 4. 27. 12:12

테이블 A와 B의 매칭정보를 모두 가져오고 싶을 때 사용하는 쿼리.

MySQL에서는 공식적으로 지원하지 않는다.


LeftJoin과 RightJoin, Union을 사용해서 원하는 값을 추출한다.

-- full outer join
SELECT ROLE.UID, ROLE.GUILD_ID, ROLE.ROLE_ID, ROLE.ROLE_NAME,
RULE.UID, RULE.DISABLED, RULE.COLLECTION_UID, RULE.GUILD_UID, RULE.BALANCE 
FROM DISCORD_ROLE AS ROLE
LEFT JOIN COLLECTION_VERIFY_RULE AS RULE
ON ROLE.ROLE_ID = RULE.ROLE_ID
WHERE ROLE.GUILD_ID = '950319893226602556'
UNION
SELECT ROLE.UID, ROLE.GUILD_ID, ROLE.ROLE_ID, ROLE.ROLE_NAME,
RULE.UID, RULE.DISABLED, RULE.COLLECTION_UID, RULE.GUILD_UID, RULE.BALANCE
FROM DISCORD_ROLE AS ROLE
RIGHT JOIN COLLECTION_VERIFY_RULE AS RULE
ON ROLE.ROLE_ID = RULE.ROLE_ID
WHERE ROLE.GUILD_ID = '950319893226602556';