我有一张叫做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表的iplow之间,则该查询将从high表中输出ranges
例如,对于ip12,我希望输出为-
12,100
因为12介于10表中的低20和高ranges之间。最有效的方法是什么?在ip表中不存在列ranges,所以我不能直接加入。

最佳答案

可以使用范围联接表。

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

关于sql - SQL-如何根据不同表中的值选择行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41175340/

10-09 00:29