SQL - 如何根据不同表中的值选择行?

时间:2016-12-16 00:05:16

标签: sql postgresql join

我有一张名为ranges的表,看起来像这样 -

create table ranges(low bigint, high bigint, id int);
insert into ranges values (10,20,100);
insert into ranges values (21,30,101);

我还有一张看起来像这样的表 -

create table ip(ip bigint);
insert into ip values (12);

如果id表中的ranges介于ip和{{1}之间,我想要一个从ip表中输出low的查询} high表。

例如,对于ip ranges,我希望输出为 -

12

因为12,100介于12表的低10和高20之间。这样做最有效的方法是什么? ranges表中的ip列不存在,因此我无法直接加入。

1 个答案:

答案 0 :(得分:3)

您可以使用范围加入表格。

SELECT
    ip.ip, ranges.id
FROM
    ip
JOIN ranges ON ip.ip BETWEEN ranges.low AND ranges.high