Oracle最小和最大列查询

时间:2011-09-23 14:47:43

标签: oracle oracle10g

好的,需要一些帮助来创建Oracle 10g数据库的查询。我有一张桌子看起来像这样:

----------------------------------------
| lowerBound | upperBound | locationId |
----------------------------------------
|      0     |     99     |     1      |
----------------------------------------
|     100    |    199     |     2      |
----------------------------------------
...

另一张表如下:

-----------------------------
| locationId | locationCode |
-----------------------------
|     1      |     12345    |
-----------------------------
|     2      |     23456    |
-----------------------------
|     3      |     34567    |
-----------------------------
...

我从一个数字开始,比如说113,但它是java中的一个变量。我需要弄清楚对应于该数字的locationId,基于它落在lowerBound和upperBound列之间,然后将其连接起来以找出第二个表中的locationCode。我查了MIN / MAX之类的东西,但是我找不到我想要的东西。我不是一个优秀的DBA,所以任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:2)

SELECT t2.locationCode
  FROM table1 t1
 INNER JOIN table2 t2 USING(locationId)
 WHERE 113 BETWEEN t1.lowerBound AND t1.upperBound

如果使用部分困扰你:

SELECT t2.locationCode
  FROM table1 t1
 INNER JOIN table2 t2 ON t2.locationId = t1.locationId
 WHERE 113 BETWEEN t1.lowerBound AND t1.upperBound

请注意,如果lowerBound和upperBound列为INTEGERS,则此方法有效。如果它们是VARCHAR,那么您当然必须使用TO_NUMBER函数。