作为一个完全的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