簡體   English   中英

如何通過比較一個表中的值與另一個表中的值來填充SQL中的列

[英]How to populate a column in SQL by comparing values from one table against another

我有兩個表:

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表中的所有行執行此操作。

只需使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM