我遇到一个问题,我不知道是否可以只用一个选择来解决。
我有一个范围列表,我需要与另一个范围列表匹配,第一个范围的任何数字......
让我试着解释一下:
Table 1: Table 2
| From | To | | From | To |
|--------|--------| |--------|---------|
| 0 | 2000 | | 0 | 15000 |
| 2001 | 10000 | | 15000 | 25000 |
| 10001 | 50000 | | 25000 | 50000 |
| 50001 | 200000 | | 50000 | 200000 |
| 200001 | 500000 | | 200000 | 400000 |
| 500001 | 0 | | 400000 | 700000 |
| 700000 | 1500000 |
[表1]第一行(0 - 2000)很容易,与[表2]第一行(0 - 15000)匹配。
但我需要[表1](10001 - 50000)的第三行(和任何其他类似情况,如第5行)与[表2]的前三行匹配,因为:< / p>
此范围内的数字10001 - 50000介于 0 至 15000 之间,但 15000 至 25000 25000 至 50000 ...
所需的结果应该是这样的:
Table result:
| From (Table 1) | To (Table 1) | From (Table 2) | To (Table 2) |
|----------------|--------------|----------------|--------------|
| 0 | 2000 | 0 | 15000 |
| 2001 | 10000 | 0 | 15000 |
| 10001 | 50000 | 0 | 15000 |
| 10001 | 50000 | 15000 | 25000 |
| 10001 | 50000 | 25000 | 50000 |
| etc...
我的目的是在SQL中没有SQL函数。
答案 0 :(得分:4)
要查看是否匹配重叠,请执行此操作。
SELECT T1.*, T2.*
FROM Table1 T1
JOIN Table2 T2
ON T1.From < T2.To
AND T1.To > T2.From
编辑:如果边框范围重复计算,则使用>=