[SQL]MySQL上でFULL JOINを実現

MySQLでテーブルの外部結合をする際に
FULL JOINみたいなことしたくて知らべたロジックです。

コードはそのまま、下記サイトのパクリですが
【MySQL】left join, right joinを同時にしたい full joinみたいなん。

コード

SELECT
	*
FROM
	[対象テーブル1] AS tb1
LEFT JOIN
	[対象テーブル2] AS tb2
ON
	[結合条件]
UNION
	DISTINCT (
		SELECT
			*
		FROM
			[対象テーブル1] AS tb1
		RIGHT JOIN
			[対象テーブル2] AS tb2
		ON
			[結合条件]
	)

解説

基本は対象テーブルに対して
[LEFT JOIN]と[RIGHT JOIN]の結果を
[UNION]するという流れです。

ただし、[UNION]するタイミングで
[DISTINCT]で一意取得処理をしないと
それぞれの結果でダブリがあるものは
2回取得されるので注意が必要です。


This entry was posted in: SQL. Bookmark the ➜ permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)