循环为100个数字

时间:2016-04-13 20:24:52

标签: sql database stored-procedures while-loop sql-query-store

我想创建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'

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

我的while循环查询应该是什么才能获得所有范围?

先谢谢

1 个答案:

答案 0 :(得分: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 startingnumber,然后返回startingnumberendingnumber,这会导致我们提取此startingnumber