我有这样的桌子
ID Day Start End
----------- ---- ----- -----
1 M 7:30 9:30
2 T 7:30 11:30
3 T 12:30 14:30
还有另一个像这样的桌子
Day Start End
---- ----- -----
M 8:30 11:30
T 8:30 10:30
我想从基于第二个表的第一个表中选择所有记录。
结果示例:
ID Day Start End
----------- ---- ----- -----
1 M 7:30 9:30
2 T 7:30 11:30
结果是这样的,因为第一个表中的前2个记录与第二个表中的条件匹配。第一排和第二排具有同一天,时间与另一排发生冲突。
此联接将起作用:
select *
from t1
join t2 on t1.day = t2.day and t1.end >= t2.start and t1.start <= t2.end
如果是时间列,则varchars
需要转换为time
:
select *
from t1
join t2 on t1.day = t2.day and
cast(t1.end as time) >= cast(t2.start as time) and
cast(t1.start as time) <= cast(t2.end as time)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句