Pra*_*mar 6 sql sql-server sql-server-2008
说Table1和我有两张桌子Table2
表格1
???????????
? ID ? RN ?
???????????
? 11 ? 1 ?
? 12 ? 2 ?
? 13 ? 3 ?
? 14 ? 4 ?
? 15 ? 5 ?
? 16 ? 6 ?
? 17 ? 7 ?
? 18 ? 8 ?
? 19 ? 9 ?
? 10 ? 10 ?
???????????
Run Code Online (Sandbox Code Playgroud)
表2
??????????????????????
? ID ? FromRN ? ToRN ?
??????????????????????
? 1 ? 1 ? 3 ?
? 2 ? 6 ? 8 ?
? 3 ? 10 ? 10 ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)
我希望所有这些记录来自Table1其RN谎言之间的任何范围之间FromRN,并ToRN在Table2
所以我的预期输出是:
???????????
? ID ? RN ?
???????????
? 11 ? 1 ?
? 12 ? 2 ?
? 13 ? 3 ?
? 16 ? 6 ?
? 17 ? 7 ?
? 18 ? 8 ?
? 10 ? 10 ?
???????????
Run Code Online (Sandbox Code Playgroud)
可以在这里找到创建模式的SQLFiddle:
Tim*_*sen 11
你可以做一个INNER JOIN两个表中筛选出那些记录Table1其RN值不属于任何范围在Table2:
SELECT t1.ID, t1.RN
FROM Table1 t1
INNER JOIN Table2 t2
ON t1.RN >= t2.FromRN AND t1.RN <= t2.ToRN
Run Code Online (Sandbox Code Playgroud)
请点击以下链接查看正在运行的演示(由OP提供):
你可以试试这个:
select t1.Id, t1.RN
from table1 t1
inner join table2 t2
on t1.Rn between t2.FromRn and t2.ToRn
Run Code Online (Sandbox Code Playgroud)