我在这里有一些非常基本的SQL:
SELECT TOP 1 *
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
)
Run Code Online (Sandbox Code Playgroud)
由于某种原因它不编译,我得到错误:
消息102,级别15,状态1,行4
'''附近的语法不正确.
什么是正确的语法?我不明白为什么我收到此错误,因为我认为它是完全合法的SQL Server语法
您需要子查询的别名:
SELECT TOP 1 t.*
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
) t
Run Code Online (Sandbox Code Playgroud)
编辑:
我犹豫补充说,使用top没有order by没有意义.你需要一些订购.所以,你可以这样做:
SELECT TOP 1 t.*
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
ORDER BY col1 ASC
) t
ORDER BY col2 DESC;
Run Code Online (Sandbox Code Playgroud)
实际上,你不需要order by在最外层,但它仍然是一个好主意.
如果没有order by,您可以这样做:
SELECT TOP 1 t.*
FROM [BP_BasicPolicy ] ;
Run Code Online (Sandbox Code Playgroud)
这将选择任意行.对于特定的一个,请使用order by.