如何在 PRINT 语句中放置 ORDER BY?

How do I put an ORDER BY in a PRINT statement?

我只需要 return 只是查询 return 的最后一行,所以我需要将它按降序排列并将其限制为 1,但是 sql不喜欢 ORDER BY 语句。我将如何编码?

DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
    SET @thirdNum = @firstNum + @secondNum
    SET @firstNum = @secondNum
    SET @secondNum = @thirdNum
    IF (@thirdNum % 2) = 0
    SET @evenSum += @thirdNum
    PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)
ORDER BY @evenSum DESC
END```

您可以在循环后直接打印:

DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
    SET @thirdNum = @firstNum + @secondNum
    SET @firstNum = @secondNum
    SET @secondNum = @thirdNum
    IF (@thirdNum % 2) = 0
    SET @evenSum += @thirdNum
END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)

除非我完全错过了你想要达到的目标,你不就是想这样做吗?

DECLARE @firstNum INT, @secondNum INT, @thirdNum INT, @evenSum INT
SET @firstNum = 1
SET @secondNum = 2
set @thirdNum = 2
SET @evenSum = 2
WHILE (@thirdNum <= 4000000)
BEGIN
    SET @thirdNum = @firstNum + @secondNum
    SET @firstNum = @secondNum
    SET @secondNum = @thirdNum
    IF (@thirdNum % 2) = 0
    SET @evenSum += @thirdNum

END
PRINT 'Answer = ' + CONVERT(VARCHAR, @evenSum)

你试图用 'ORDER BY' 做的事情没有用,因为你没有处理数据集,"order" 没有什么可做的 - 你有一些变量而且你在循环中对它们进行一些计算,直到满足特定条件 - 你想知道当循环完成它的最后一次迭代时 @evensum 的值是多少。因此,您需要做的就是等待代码退出循环并打印值。