我有2个表,t1和t2
t1
ID P CODE
3 11 19
5 5 118
8 Null 212
6 8 992
t2
ID c1 C2
3 1 99
3 100 199
3 200 299
5 500 999
如何选择值为P的t2和加法列的所有列,其中t1.code介于c1和c2之间 喜欢
ID c1 C2 p
3 1 99 11
3 100 199 5
3 200 299 Null
5 500 999 8
由于
答案 0 :(得分:0)
一种方法是使用相关子查询:
select t2.*,
(select t1.p
from t1
where t1.code between t2.c1 and t2.c2
limit 1
) as p
from t2;
您也可以使用join
执行此操作。如果存在多个匹配,则相关子查询将仅返回一个值。请注意,这使用limit
,此功能几乎在所有数据库中都可用,但可能具有不同的名称。
如果多个匹配问题不是很重要,您可以将其标记为join
:
select t2.*, t1.p
from t2 left outer join
t1
on t1.code between t2.c1 and t2.c2;
答案 1 :(得分:0)
如果Id在T1中是唯一的,
Select t2.Id, t2.C1, t2.C2, t1.p
From t2 left Join t1
On t1.Id = t2.Id
And t1.code between t2.c1 and t2.c2