sql - 如何在 MySQL 中执行 FULL OUTER JOIN?

标签 sql mysql join outer-join full-outer-join

我想做一个 full outer join 在 MySQL 中。这可能吗? MySQL 支持全外连接吗?

最佳答案

您在 MySQL 中没有完全连接,但您可以确定emulate them .

对于从 this Stack Overflow question 转录的代码示例你有:

有两个表 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
<小时/>

上面的查询适用于完全外连接操作不会产生任何重复行的特殊情况。上面的查询依赖于 UNION 集合运算符来删除查询模式引入的重复行。我们可以通过对第二个查询使用反连接模式来避免引入重复行,然后使用 UNION ALL 集合运算符来组合两个集合。在更一般的情况下,完整的外部联接将返回重复的行,我们可以这样做:

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

关于sql - 如何在 MySQL 中执行 FULL OUTER JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33830307/

相关文章:

mysql - FluentNHibernate MySQL 配置

mysql - 哪个 mysql 32/64 位

sql - PostgreSQL:如何根据 WHERE 子句选择不同的关系并按不同字段排序?

c# - 执行文件上传时出错

php - 如何在 SQL 查询中使用选择的结果作为偏移量

mysql - 在 laravel 5 中使用 mysql json 字段而不是表上的许多可为空字段可能有什么缺点

Mysql查询优化,搜索记录!

MySQL - JOIN 2个表有2个共同的ID

MySQL/搜索两个表

sql - Firebird 中的慢查询执行