2015-02-23 86 views
0

我有以下的(簡化)表:
SQL聯盟與條件字段

No0 | No1 | start0 | end0 
10000 |   |    | 
19999 |   |  10000 | 19999 
20000 |   |    | 
29999 |   |  20000 | 29999 


No0 | No1 | start0 | end0 
     | 11000 |    |  
     | 15950 |    | 15950 
     | 16000 |    | 

我怎樣才能UNION他們(或其他方式),但填2號表中相應的No0基於No1start0end0之間,使其返回:

No0 | No1 | start0 | end0 
10000 |   |    | 
19999 |   |  10000 | 19999 
20000 |   |    | 
29999 |   |  20000 | 29999 
19999 | 11000 |    |  
19999 | 15950 |    |  
19999 | 16000 |    | 
+0

爲什麼woudn't簡單union語句的工作? '從table1中選擇* UNION ALL從table2中選擇* – xQbert 2015-02-23 18:42:43

+0

您基本上要求在表2中選擇一個JOIN,它與UNION無關 – Louis 2015-02-23 18:48:36

回答

1

在工會的下半部分,攜手回表A,其中1號是START0和END0之間。

下面是一個例子:

select  ta.No0, 
      ta.No1, 
      ta.Start0, 
      ta.End0 
from  TableA as ta 
union all 
select  ta.No0, 
      tb.No1, 
      NULL as Start0, 
      NULL as End0 
from  TableB as tb 
inner join TableA as ta on tb.No1 between ta.Start0 and ta.End0; 

SQLFiddle

+0

觸發得快,並且您的繪製速度更快。 +1 – 2015-02-23 18:50:08

+0

@ Love2Learn,哈哈謝謝! – animateme 2015-02-23 18:51:52

+0

謝謝!我知道這很簡單,但你不會相信我花了多少時間來旋轉我的輪子。 – Boone 2015-02-23 19:30:58