【发布时间】:2014-03-29 16:56:21
【问题描述】:
我一直致力于在 SQL 中创建嵌套的 while 循环,但遇到了 while 循环的问题。我认为主要问题在于我的外循环。有什么建议?
USE HW_DB;
IF OBJECT_ID('dbo.PythagoreanTriangles') IS NOT NULL
DROP TABLE dbo.PythagoreanTriangles;
GO
CREATE TABLE PythagoreanTriangles
(
Side1 INT NOT NULL,
Side2 INT NOT NULL,
Hypotenuse FLOAT NOT NULL
);
DECLARE @side1 AS INT = 1;
DECLARE @side2 AS INT = 1;
DECLARE @count AS INT = 1;
DECLARE @element AS INT = 0;
WHILE (@side1 = @count)
BEGIN
WHILE @side2 <= 10 BEGIN
INSERT INTO dbo.PythagoreanTriangles
VALUES (@side1, @side2, SQRT((@side2 * @side2) + (@side1 * @side1)));
UPDATE dbo.PythagoreanTriangles SET Hypotenuse = ROUND(Hypotenuse, 2)
SET @side2 = @side2 + 1;
SET @count = @count + 1;
SET @element = @element + 1;
IF @element = 10
BEGIN
SET @side1 = @side1 + 1;
SET @element = 0;
END;
END;
END;
输出应如下所示:
1 1 1.41
1 2 2.24
1 3 ...
1 4 ...
1 5
1 6
1 7
1 8
1 9
1 10
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
…………
........等等
9 9
9 10
10 10
【问题讨论】:
-
通过比较@side1 和@count,您到底想做什么?第二次点击你的外部“while”,@count=11 和@side1=2。
-
再想一想,如果问题是我认为的问题,则需要在@side1 递增后分配@count=@side1,并将外部循环更改为“while (@side1
-
在这种情况下,嵌套循环似乎是不必要的复杂化。为什么不是从 1 到 10 的单个循环?更好的是,阅读@GarethD 的答案。
-
谢谢,我想通了!!
标签: sql loops while-loop