如何在MySQL中执行复杂范围查询

drb*_*sen 0 mysql sql range

我有一个表(表A),带有一个整数字段(字段B).对于表A的每一行,我想构建围绕字段B的整数值的+/- 100的范围,然后找到字段B中在这些范围内的所有值.需要对字段B中的所有值执行查询.查询需要返回每个行范围内的每一行.这是我想要做的一个例子:

Table A
_______
A    1000    
B    3000    
C    5000    
D    1090   
Run Code Online (Sandbox Code Playgroud)

使用上面的表A,查询将首先找到字段B中所有整数的范围(+/- 100).

900 - 1100
2900 - 3100
4900 - 5100
990 - 1190
Run Code Online (Sandbox Code Playgroud)

然后,查询将遍历这些范围并返回表A中属于生成范围的行.使用上面的示例,查询将返回:

A    1000
A    1000
B    3000
C    5000
D    1090
D    1090
Run Code Online (Sandbox Code Playgroud)

A而且D因为它他们属于自己的范围内返回两次.如何构造一个查询,返回每行范围之间的每一行?在此先感谢您的帮助.

mat*_*lie 5

SELECT t2.*
FROM tableA AS t1
INNER JOIN tableA AS t2 ON t2.fieldB >= (t1.fieldB - 100) AND t2.fieldB <= (t1.fieldB + 100)
Run Code Online (Sandbox Code Playgroud)

A不应该再显示两次,因为它也在D的范围内?(这是上述查询的情况 - 如果不正确,请详细说明为什么^^)