[英]Select two tables side by side
我有两个表,里面有两个文件,其中 table1 总是比第二行多一行。
我想将两张表合并为一张。 当我使用right join
时,例如
select *
from table2
right join table1 on table1.id = table2.id and table1.eq_nb = table2.eq_nb
我将有eq_nb = 25
的 4 种组合,因为它重复了两次。
但我宁愿把列并排
要知道,我没有每个 eq_nb 的到达和离开时间的条件(我不能添加类似datediff(second,table1.arrival_time,table2.depart_time) < X
东西)
表格1:
id | eq_nb | arival_time
-------------------------------------
1 | 25 | 05:30:15.231
-------------------------------------
2 | 50 | 06:30:15.231
-------------------------------------
3 | 7 | 07:30:15.231
-------------------------------------
1 | 25 | 08:30:15.231
-------------------------------------
5 | 27 | 09:30:15.231
-------------------------------------
表2:
id | eq_nb | depart_time
----------------------------------
1 | 25 | 05:31:15.231
----------------------------------
2 | 50 | 06:31:15.231
----------------------------------
3 | 7 | 07:31:15.231
----------------------------------
1 | 25 | 08:31:15.231
----------------------------------
期望的结果:
id | eq_nb | arrival_time | depart_time
-------------------------------------------------------
1 | 25 | 05:30:15.231 | 05:31:15.231
-------------------------------------------------------
2 | 50 | 06:30:15.231 | 06:31:15.231
-------------------------------------------------------
3 | 7 | 07:30:15.231 | 07:31:15.231
-------------------------------------------------------
1 | 25 | 08:30:15.231 | 08:31:15.231
--------------------------------------------------------
5 | 27 | 09:30:15.231 | NULL
--------------------------------------------------------
left join
应该做你想做的事:
select *
from table1 t1 left join
table2 t2
on t1.id = t2.id and t1.eq_nb = t2.eq_nb;
鉴于您的数据, id
是唯一的,因此不应该有重复。 注意:这相当于你的第一个查询; left join
通常更容易理解,因为第一个表中的所有行都在结果集中。
这是一个 db<>fiddle,说明它是有效的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.