我有两个数据库表,两个表都包含一个称为“ 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查询可让我产生此查询?
答案 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