2
私は、クエリをthis-SQL - 別のテーブルの値に基づいて行を選択する方法は?
create table ip(ip bigint);
insert into ip values (12);
のように見える別のテーブルを望んできましたthis-
create table ranges(low bigint, high bigint, id int);
insert into ranges values (10,20,100);
insert into ranges values (21,30,101);
のように見えますranges
と呼ばれるテーブルをしましたranges
からの出力するであろうid
ip
ip
テーブルがlow
とhigh
ranges
テーブルの間にある場合12
はranges
テーブルからロー10
と高20
の間にあるので、
12,100
- 例えば
は、IP 12
のために、私は出力になりたいです。これを行う最も効率的な方法は何ですか?列ip
はranges
テーブルに存在しないため、簡単な結合はできません。
RedShiftでは動作しますが、非常に遅いです。私は警告になっています - 'ネストされたループ結合はクエリプランにあります - 結合述語を参照してデカルト積を避ける' – user375868
右、このような結合は大きなテーブルではお勧めできません。あるいは、 'ranges'に定期的な間隔がある場合。 'ip.ip'を最も近い間隔の基数に切り上げて' JOIN'を実行することができます。 – ydoow