如何在MySQL中进行FULL OUTER JOIN? [英] How to do a FULL OUTER JOIN in MySQL?

查看:117
本文介绍了如何在MySQL中进行FULL OUTER JOIN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在MySQL中进行完全外部联接.这可能吗? MySQL支持完全外部联接吗?

I want to do a Full Outer Join in MySQL. Is this possible? Is a Full Outer Join supported by MySQL?

推荐答案

您在MySQL上没有FULL JOINS,但是可以确定

You don't have FULL JOINS on MySQL, but you can sure emulate them.

对于从此SO问题转录的代码示例,您具有:

For a code SAMPLE transcribed from this SO question you have:

有两个表t1,t2:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id


上面的查询适用于FULL OUTER JOIN操作不会产生任何重复行的特殊情况.上面的查询取决于UNION集运算符,以删除查询模式引入的重复行.我们可以通过在第二个查询中使用 anti-join 模式来避免引入重复的行,然后使用UNION ALL set运算符组合这两个集合.在更一般的情况下,FULL OUTER JOIN将返回重复的行,我们可以这样做:


The query above works for special cases where a FULL OUTER JOIN operation would not produce any duplicate rows. The query above depends on the UNION set operator to remove duplicate rows introduced by the query pattern. We can avoid introducing duplicate rows by using an anti-join pattern for the second query, and then use a UNION ALL set operator to combine the two sets. In the more general case, where a FULL OUTER JOIN would return duplicate rows, we can do this:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
WHERE t1.id IS NULL

这篇关于如何在MySQL中进行FULL OUTER JOIN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆