我有一张叫做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
表的ip
和low
之间,则该查询将从high
表中输出ranges
。例如,对于ip
12
,我希望输出为-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/