TOP
命令是否存在此问题? SELECT
语句不支持SQL变量吗?我的代码:
DECLARE @cnt INTEGER = 0;
Declare @cnt_total INT;
SET @cnt_total = 5
WHILE (@cnt < @cnt_total)
BEGIN
SET @cnt = @cnt + 1;
SELECT TOP @cnt *
FROM FOCUSCDR.PATIENTDXHISTORY
END;
错误:
第15级州立1行9的消息102
'@cnt'附近的语法不正确。
虽然上面的方法在使用时有效。
SELECT TOP 1 *
FROM FOCUSCDR.PATIENTDXHISTORY
答案 0 :(得分:3)
因为语法需要括号:
DECLARE @cnt INTEGER = 0;
Declare @cnt_total int ;
Set @cnt_total = 5
WHILE (@cnt < @cnt_total)
BEGIN
SET @cnt = @cnt + 1;
Select top (@cnt) * from FOCUSCDR.PATIENTDXHISTORY
END;
编辑:
如@Tim Biegeleisen的评论中所述,您应该使用ORDER BY,否则使用TOP毫无意义,因为不能保证顺序,并且您可能会得到不一致的结果。查看this article以获得更多信息。