0

我想创建 SQL While 循环,我可以在其中基于 12 位数字和两个列范围内提取数千个字段。例如,

如果我在一个表中有 3 列

MasterKeyNumber---BB000Q000000
StartingNumber BB0000000001
EndingNumber - BB000Q00000022

我想创建一个 while 循环,它将从起始和结束数字中提取所有数字,并将显示哪个也将显示 MasterKey 数字

例如,

MasterKeyNumber---BB000Q000000
StartingNumber BB0000000001
StartingNumber BB0000000002
StartingNumber BB0000000003
StartingNumber BB0000000004
StartingNumber BB0000000005
StartingNumber BB0000000006
StartingNumber BB0000000007
StartingNumber BB0000000008
StartingNumber BB0000000009
StartingNumber BB0000000010
StartingNumber BB0000000011
StartingNumber BB0000000012
StartingNumber BB0000000013
StartingNumber BB0000000014
StartingNumber BB0000000015
StartingNumber BB0000000016
StartingNumber BB0000000017
StartingNumber BB0000000018
StartingNumber BB0000000019
StartingNumber BB0000000020
StartingNumber BB0000000021
StartingNumber BB0000000022

EndingNumber - BB000Q00000022

我只能通过使用“Between”“AND”之类的语句来提取一个或两个范围,但是如果我有显示多个不同数字和多个不同范围的范围,我该怎么做?

例如,我的查询一次拉一个范围

Select MasterKey, StartingNumber, EndingNumber, from TabelName
where StartingNumber Between 'BB0000000001' AND 'BB0000000022'

它只给出这个范围,但我有数千个不同的数字,它们将有多个范围,如 BB00000000004 到 BB00000000010 , BB0000000045 到 BB0000000066 , BB0000000088 到 BB0000000099

获取所有范围的 while 循环查询应该是什么?

提前致谢

4

1 回答 1

1

如果您以循环之类的形式考虑 SQL 查询,您最终会陷入很多死胡同。而是考虑数据集及其彼此之间的关系。

考虑获取您想要返回的所有范围:

SELECT masterkey, startingnumber, endingnumber FROM tablename;

现在我们有了要查询的每个开始和结束编号。我们现在想要获取出现在该范围内的所有起始数字,它是主密钥。所以:

SELECT
    tablename.masterkey,
    tablename.startingnumber,
    myRanges.startingNumber,
    myRanges.endingNumber
FROM
    (SELECT masterkey, startingnumber, endingnumber FROM tablename) myRanges
    INNER JOIN tablename ON
        tablename.startingnumber BETWEEN myRanges.StartingNumber and myranges.EndingNumber

这里使用该初始查询来设置开始和结束范围以再次查询表。我们返回您感兴趣masterkey的那个,然后那个导致我们拉这个特定的。startingnumberstartingnumberendingnumberstartingnumber

于 2016-04-13T20:32:34.503 回答