您好我有两个SQL表,首先看起来像这样:
| id | position | name |
|----|----------|-------|
| 1 | 553 | John |
| 2 | 876 | James |
| 3 | 999 | Jack |
第二个像这样:
| id | class | interval_start | interval_end |
|----|--------|----------------|--------------|
| 1 | class1 | 500 | 580 |
| 2 | class2 | 600 | 700 |
| 3 | class3 | 900 | 1200 |
我想根据间隔将第二个表中的类添加到第一个表中(如果t1.position大于start而小于end - 使用class添加另一个列) 所以结果应该是:
| id | position | name | class |
|----|----------|-------|--------|
| 1 | 553 | John | class1 |
| 2 | 876 | James | |
| 3 | 999 | Jack | class3 |
我不知道该怎么做,因为我有非常大的表(数百万行)。我也可以下载数据并用Python手动处理。
您认为哪种方式最适合此任务?
答案 0 :(得分:0)
您可以使用left join
:
select t1.*, t2.class
from table1 t1 left join
table2 t2
on t1.position between t2.interval_start and t2.interval_end;
答案 1 :(得分:0)
您可以尝试以下SQL,它将满足您的要求。
select t1.id,
t1.position,
t1.name,
t2.class
from table1 t1
left join table2 t2
on (t1.id = t2.id
and t1.position between t2.interval_start and t2.interval_end
);
输出:
+------+----------+-------+--------+
| id | position | name | class |
+------+----------+-------+--------+
| 1 | 553 | John | class1 |
| 3 | 999 | Jack | class3 |
| 2 | 876 | James | NULL |
+------+----------+-------+--------+