我尝试查找给定值列表的行,其中一个值位于两列之间的范围内,例如:
id column1 column2
1 1 5
2 6 10
3 11 15
4 16 20
5 21 25
...
99 491 495
100 496 500
我想提供一个值列表,例如(23, 83, 432, 334, 344)
将返回行
id column1 column2
5 21 25
17 81 85
87 431 435
67 331 335
69 341 345
到目前为止,我能想到这样做的唯一方法是将每个人分成它自己的电话
SELECT * FROM TableA WHERE (column1 < num1 AND num1 < column2)
然而,当数字列表大约有几百万时,这种情况就会非常糟糕。
有没有更好的方法呢?
感谢您的帮助。
答案 0 :(得分:2)
将数百万个数字放入SQL命令本身是不实用的。
显然,您必须将数字放入(临时)表中。 然后你可以加入这两个表:
SELECT *
FROM TableA JOIN TempTable
ON TempTable.Value BETWEEN TableA.column1 AND TableA.column2;