1

您好,我有两张桌子 T1 和 T2。T1 有一列整数值。并且 T2 具有由两列定义的范围和每个范围的相应值......像这样:

range_min range_max  corr_value
   5         10         1020
   11        15         5000

假设我希望能够从 T2 中为 T1 的每个整数获取“值”,具体取决于整数值属于哪个范围。比如说,我在 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 回答