合并SQL中两个数据库表的结果

时间:2019-08-07 13:11:22

标签: sql postgresql

我有两个数据库表,两个表都包含一个称为“ direction”的列,一个表包含另一个的外键。我想一次查询数据库,以便给我合并后的行结果集,其中包含来自两个表的所有数据。

对于第一个表中的一行,不能保证第二个表中会有互补项。在这种情况下,我希望单元格为空白。

两个表的提取示例如下所示

Table 1
case_id   direction   speed
1         000         1.22
1         090         0.97
1         180         0.17
1         270         2.50
2                     2.14

Table 2
tbl1_case_id   direction   probability
1              000         0.175
1              090         0.275
1              180         0.555
1              270         0.145

我想要一个如下的结果集:

Results
case_id   direction   speed   probability
1         000         1.22    0.175
1         090         0.97    0.275
1         180         0.17    0.555
1         270         2.50    0.145
2                     2.14

是否有一个有效的SQL查询可让我产生此查询?

2 个答案:

答案 0 :(得分:2)

如果要从两个表中获取所有行,请使用full join

select id, direction, t1.speed, t2.probability
from table1 t1 full join
     table2 t2
     using (id, direction);

您的示例结果和解释建议使用left join

select id, direction, t1.speed, t2.probability
from table1 t1 left join
     table2 t2
     using (id, direction);

但是,在这种情况下,330的值为空白。

答案 1 :(得分:0)

我想您需要一个简单的左联接-

SELECT T1.case_id, T1.direction, T1.speed, T2.probability
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.id = T2.id