返回范围之间的值,并使用结果与没有外键的不同表进行比较



作为一个完全的postgres初学者,我正在处理一个名为range_results的表,其中包含:

lower| upper | result
1    | 10    | abc
11   | 20    | def
21   | 30    | ghi
... 
n+10 | n+10  | xyz

然后我有一个名为codes的表,它有一个称为numbers的数据字段,其中包含的数字可以是引用集中的任何数字(确切地说是下、上或中间的数字(。因此,当有命中时,我想从range_results表中使用这些参考值从codes表中返回相应的numbers。。。

我的困惑是,由于不存在FK关系(我相信(,我不能做下面的查询,因为我得到了一个严重的错误";由用作表达式"的子查询返回的多于一行;当我运行查询时。起初我想我会使用left join。但这仍然需要一种关系。。。

select result from range_results
where lower >= (select numbers from codes)
and upper <= (select numbers from codes)

我走对了吗?这个现有的查询能被挽救吗?

一种方法是left join:

select n.number, rr.*
from numbers n left  join
range_results rr
on rr.number >= rr.lower and rr.number <= rr.upper

最新更新