如何通过将一个表中的值与另一个表

时间:2016-12-27 22:13:20

标签: sql sqlite

我有两张桌子:

Vacation_days

id    name     work_days    tier
--------------------------------
 1    John        366       Null
 2    Mike        764       Null
 3    Josh       1163       Null

Vacation_algorithm

day1     day2        tier
-------------------------
    0        184      1
  185        364      2
  365       5999      3
 6000    1000000      4

我想遍历vacation_days表中的每一行,看看vacation_days中work_days对应的等级(work_days必须介于start_day和end_day之间)。

然后我想将该层号放在vacation_days中包含的层列中,该列当前填充了空值。

我试过这个:

Select tier 
From Vacation_Algorithm 
Where (Select work_days 
       From vacation_days 
       Where work_days = 366) between day1 and day2. 

这将返回正确的输出,这是一个具有第3层的列。但是,我想要一个公式对我的Vacation_days表中的所有行执行此操作。

1 个答案:

答案 0 :(得分:2)

只需使用join即可。我会选择一个left join,所以如果没有匹配则不会留下任何行:

select vd.*, va.tier
from vacation_days vd left join
     vacation_algorithm va
     on vd.work_days between va.day1 and va.day2;