T-sql Range Query - PullRequest
       21

T-sql Range Query

0 голосов
/ 14 августа 2010

Я хочу сделать что-то похожее на ниже. У меня есть псевдология ниже. Просто интересно, как это реализовать:

delete B
from
TableA A with (nolock), TableB B with (nolock) 
where A.BeginNumber <= B.startipnum and A.Endnumber >= B.endipnum

delete A
from
TableA A with (nolock), TableB B with (nolock) 
where A.BeginNumber => B.startipnum and A.Endnumber <= B.endipnum

update B
set endipnum = startnumber - 1
from
TableA A with (nolock), TableB B with (nolock) 
where A.BeginNumber < B.startipnum and A.Endnumber <= B.endipnum

update B
set startipnum = endnumber + 1
from
TableA A with (nolock), TableB B with (nolock) 
where A.BeginNumber >= B.startipnum and A.Endnumber > B.endipnum

Пример данных

Таблица A

BeginNumber EndNumber
----------      ---------
16843009    16843009
16843009    16843010
16843009    16843013
16843009    16843016
33686020    33686024

TableB

startipnum  endIPNum
----------      ---------
1488047401  1488047401
1504824617  1873923369
1890700585  1907477801
1924255017  2142358825
2159136041  2276576553

Нет двух столбцов для объединения между двумя таблицами. Пожалуйста, помогите.

Спасибо!

1 Ответ

0 голосов
/ 14 августа 2010

Ничто не мешает вам выполнить объединение с предложением on, например, ON 1=1 - которое объединит всех со всеми - аналогично, CROSS JOIN достигает того же (и это лучший способ сделать это TBH).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...