我对SQL oracle中的查询有疑问,很高兴听到有人在这里可以帮助我。 所以,我有两个桌子。 一个包含某个内容的开始时间和结束时间(通常是很长的时间),第二个包含其他内容的开始时间和结束时间(通常是很短的时间)。我想将第二个表连接到第一个表,这样当第二个表中的时间包含在第一个表中时,第二个表中的行将连接到第一个表。 我会举一个例子:
第一张桌子:
name start end
---- ----- -----
a 10:00 12:00
b 16:00 18:00
第二张表:
name start end
---- ----- -----
c 11:30 11:45
d 16:15 17:45
因此,所需的表会将第二个表中的第二行连接到第一个表中的第二行,以及表中的第一行。
谢谢!
答案 0 :(得分:1)
尝试如下
select t1.*,t2.* from table1 t1 join table2 t2
on t1.start<=t2.start and t1.end>=t2.end
答案 1 :(得分:1)
您可以在联接的'ON'子句中使用以下表达式。
... ON(table1.start <= table2.start AND table1.end> = table2.end)。
答案 2 :(得分:1)
假设表1中的时间间隔不重叠,
Select *
From Table1 a
INNER JOIN Table2 b
on b.start between a.start and a.end
答案 3 :(得分:0)
如果我答对了,则必须完全包括第二个表中的行范围:
SELECT *
FROM Table_A A
INNER JOIN Table_B B
ON B.start BETWEEN A.start AND a.end
AND B.end BETWEEN A.start AND a.end