Oracle

從一個表中選擇,其中範圍保存在屬於另一個表的列中

  • January 21, 2019

我正在嘗試在Oracle SQL中編寫一個 SELECT 語句,其中我有一個表 A,其中包含一個“START”列和一個包含分區編號的“END”列。

我希望表 B 只提取表 A 中列“START”和“END”之間的那些分區號

例如

表_A

ID | START_DIVISION | END_DIVISION
---+----------------+--------------
1  | 01             | 03
2  | 06             | 08
3  | 09             | 09

表_B

DivisionNo | DivisionName
-----------+----------------------------
01         | London
02         | East Midlands
03         | West Midlands
04         | Yorkshire
05         | Lancashire
06         | Scotland
07         | South Wales
08         | North Wales
09         | Rep of Ireland

我所追求的是這樣的:

SELECT * FROM TABLE_B 
WHERE DivisionNo BETWEEN TABLE_A.START_DIVISION and TABLE_A.END_DIVISION

我假設一個JOIN語句可以做到這一點,但我不太確定如何在 SQL 中做到這一點。

對此的任何幫助將不勝感激。

在 ANSI SQL 和 SQL Server 中,您只需使用 INNER JOIN。我不知道 Oracle 是否支持這一點,但如果它不支持,我會感到驚訝……沒有 DDL,所以在我的腦海中輸入:

SELECT * 
FROM table_b AS b
INNER JOIN table_a AS a ON b.DivisionNo BETWEEN a.start_division AND a.end_division

引用自:https://dba.stackexchange.com/questions/227686