从一个表中选择值,并使用另一个表的两个变量之间的值

时间:2014-02-27 23:47:00

标签: sql

我有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

由于

2 个答案:

答案 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