连接两个表而不根据连接条件过滤数据

Posted

技术标签:

【中文标题】连接两个表而不根据连接条件过滤数据【英文标题】:Joining two tables without filtering the data on the basis of joining condition 【发布时间】:2017-11-30 14:05:57 【问题描述】:

我有两个表 Table1 和 Table2

表 1:

ID1 |   C1  |   C2  |   C3
1   |   a   |   b   |   c
2   |   d   |   e   |   f
3   |   g   |   h   |   i

表 2:

ID2 |   C4  |   C5  |   C6
2   |   k   |   l   |   m

我想加入表一和表二得到如下结果:

ID1 |   C1  |   C2  |   C3  |   C4  |   C5  |   C6
1   |   a   |   b   |   c   |   -   |   -   |   -
2   |   d   |   e   |   f   |   k   |   l   |   m
3   |   g   |   h   |   i   |   -   |   -   |   -

这两个表在条件ID1=ID2 下被连接,当这个条件不成立时,表2 中的其余列应自动为null。结果中的总列数应始终等于表 1 中的列数。表1中的ID是表2中ID的超集。我应该使用什么样的join和join条件?

【问题讨论】:

你应该使用LEFT JOIN ON ID1=ID2 您可以在这里花一点时间。 blog.codinghorror.com/a-visual-explanation-of-sql-joins 【参考方案1】:

假设首先使用第一个表的左外连接。上面的 SQL 语法是:

SELECT * 
FROM Table1  
LEFT JOIN Table2 On Table1.ID1=Table2.ID2

【讨论】:

以上是关于连接两个表而不根据连接条件过滤数据的主要内容,如果未能解决你的问题,请参考以下文章

如何根据过滤条件添加计数列而不是在dplyr中进行分组?

从 dest_table 插入 src_ 表而不重复

MySql数据库与JDBC编程三

SQL左连接与JOIN条件中的过滤器与WHERE子句中的过滤器[重复]

mysql左连接

使用连接进行条件过滤