sql - MySQL:左连接与右连接的联合

标签 sql mysql

假设我们有以下表 t1 和 t2:

t1:
id | column_1
-------------
 1 |   1
 2 |   2

t2:
id | column_2
-------------
 2 |   2
 3 |   3

我们想要找到以下结果:

id | column_1 | column_2
------------------------
 1 |  1       | 
 2 |  2       | 2
 3 |          | 3

这基本上是右连接与左连接的并集。以下代码有效但感觉笨拙:

(
    SELECT t1.id, t1.column_1, t2.column_2 
    FROM t1 
    LEFT JOIN t2 ON t1.id = t2.id
)
UNION
(
    SELECT t2.id, t1.column_1, t2.column_2 
    FROM t1 
    RIGHT JOIN t2 ON t1.id = t2.id
)

是否有更好的方法来实现这一点?

最佳答案

select a.id, t1.column_1, t2.column_2
from (
    select id from t1
    union 
    select id from t2
) a
left outer join t1 on a.id = t1.id
left outer join t2 on a.id = t2.id

关于sql - MySQL:左连接与右连接的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440808/

相关文章:

c# - 我希望数据库表中具有 NULL 的列将其设为空白

sql - 根据新货与返回分割购买

mysql - 将 MySQL 值拆分为整数

php - 使用时间戳计算平均点击率

java - 仅用于审计目的的 ER 建模字符串对象列表

MySQL 更新查询语法错误

mysql - 在使用 cfif 的查询中尝试将行值与表单值进行比较并执行查询

sql - 如何将varchar列值转换为int?

java - 将 java.util.date 与 java.sql.Time 合并

.net - .Net SQLConnection 类是否有更安全的替代方案?