我有一张这样的桌子
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个记录与第二个表中的标准相匹配。第一排和第二排有同一天,时间与另一排发生冲突。
发布于 2015-11-02 04:48:10
这一联接将起作用:
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)
https://stackoverflow.com/questions/33470909
复制相似问题