1

こんにちは、T1 と T2 の 2 つのテーブルがあります。T1 には整数値の列があります。T2 には、2 つの列で定義された範囲と、各範囲に対応する値があります...次のようなものです。

range_min range_max  corr_value
   5         10         1020
   11        15         5000

整数値がどの範囲に入るかに応じて、T1 の各整数に対して T2 から「値」を取得できるようにしたいとします。たとえば、T1 に 6、7、および 12 があるとします。次に、理想的な結果は次のようになります。

integer_val  corr_value
     6          1020
     7          1020
     12         5000

参加するものは何もないことに注意してください。SQLを使用してこれを行う方法がわかりませんでした。効果があるかどうかはわかりませんが、HiveQL を使用しています。

本当にありがとうございました。ありがとうございました!

乾杯

4

2 に答える 2

3

非等価結合を使用できます。SQL が をサポートしている場合はbetween

select t1.integer_val, t2.corr_value
from t1
left outer join t2 on t1.integer_val between t2.range_min and t2.range_max

それ以外の場合は、使用

select t1.integer_val, t2.corr_value
from t1
left outer join t2 on t1.integer_val >= t2.range_min and t1.integer_val <= t2.range_max

これは、sqlfiddle の mysql デモへの参照です。

このクエリは、 に重複がない場合にのみ、説明どおりに機能しますt1

于 2013-01-31T03:02:16.660 に答える
1
select integer_val, corr_value
from t1 join t2 on integer_val >= range_min
and integer_val >= range_max
于 2013-01-31T03:03:05.850 に答える