选择范围内的时间戳

时间:2017-05-01 09:47:13

标签: sql-server merge

我有2张桌子。示例表1:

    ID        episode_id     episode_start      episode_end
    ----------------------------------------------------
    1             1            1                  2
    1             2            4                  5
    1             3            96                 105
    1             4            110                114 
    2             1            1                  4
    2             2            13                 24

示例表2

    ID        timestamp       Other_info   
    --------------------------------
    1             1            111                  
    1             2            142                
    1             3            114                
    1             4            112                
    1             5            116                
    1             6            123                 
    2             1            145                 
    2             2            156                
    2             3            154                

我想基于table2.episode_start和table1.episode_end之间的table2.timestamp =合并两个表。

最终表格应该是表格2的一个子集,只有时间戳表中有一集。

问题:怎么做?什么是计算效率最高的方式?

编辑:实际上我的表格要长得多。

因此,例如,ID = 1的episode_start与第12集中ID = 1200的剧集开头相同。所以简单地合并它们不起作用。

编辑:预期输出:

    ID        timestamp       Other_info   
    --------------------------------
    1             1            111                  
    1             2            142                            
    1             4            112                
    1             5            116                              
    2             1            145                 
    2             2            156                
    2             3            154   

等等。合并基本上是表1对表2的某种过滤。

1 个答案:

答案 0 :(得分:0)

select table2.id, timestamp, other_info
from table1
left join table2 on table2.timestamp between table1.episode_start and table1.episode_end
where table2.id = table1.id

输出:

id         timestamp      Other_info
---------------------------------------
1              1              111
1              2              142
1              4              112
1              5              116
2              1              145
2              2              156
2              3              154