MySql 完全加入
MySql Full Join
我正在使用 MySql
所以我有 5 个表,我正在尝试构建一个视图,将所有这些表连接在一起并显示当前结构所缺少的信息。
平台(1=多)PG(1=多)TS
PG(1 = 许多)PGHist
TT(1 = 许多)TS
或
我正在使用 MySql,但我不确定如何写这个,因为据我所知,在 MySql 中你不能使用完全连接,有人能帮忙吗?
我需要它所以对任何部分显示空值。
考虑使用 LEFT JOIN 和 RIGHT JOIN 的 UNION 来模拟 MySQL 中的 FULL JOIN,如下所示:
SELECT * FROM PLAT
LEFT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
LEFT JOIN PGHIST ON PGHIST.FORGEIN_KEY = PG.PRIMARY_KEY
LEFT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
LEFT JOIN TS ON TS.FORGEIN_KEY = PG.PRIMARY_KEY
LEFT JOIN TT ON TT.FORGEIN_KEY = TS.PRIMARY_KEY
UNION
SELECT * FROM PLAT
RIGHT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
RIGHT JOIN PGHIST ON PGHIST.FORGEIN_KEY = PG.PRIMARY_KEY
RIGHT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
RIGHT JOIN TS ON TS.FORGEIN_KEY = PG.PRIMARY_KEY
RIGHT JOIN TT ON TT.FORGEIN_KEY = TS.PRIMARY_KEY
我正在使用 MySql
所以我有 5 个表,我正在尝试构建一个视图,将所有这些表连接在一起并显示当前结构所缺少的信息。
平台(1=多)PG(1=多)TS
PG(1 = 许多)PGHist
TT(1 = 许多)TS
或
我需要它所以对任何部分显示空值。
考虑使用 LEFT JOIN 和 RIGHT JOIN 的 UNION 来模拟 MySQL 中的 FULL JOIN,如下所示:
SELECT * FROM PLAT
LEFT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
LEFT JOIN PGHIST ON PGHIST.FORGEIN_KEY = PG.PRIMARY_KEY
LEFT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
LEFT JOIN TS ON TS.FORGEIN_KEY = PG.PRIMARY_KEY
LEFT JOIN TT ON TT.FORGEIN_KEY = TS.PRIMARY_KEY
UNION
SELECT * FROM PLAT
RIGHT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
RIGHT JOIN PGHIST ON PGHIST.FORGEIN_KEY = PG.PRIMARY_KEY
RIGHT JOIN PG ON PG.FORGEIN_KEY = PLAT.PRIMARY_KEY
RIGHT JOIN TS ON TS.FORGEIN_KEY = PG.PRIMARY_KEY
RIGHT JOIN TT ON TT.FORGEIN_KEY = TS.PRIMARY_KEY