我在这里有一些非常基本的SQL:
SELECT TOP 1 *
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
)
由于某种原因,它无法编译,我收到错误:
Msg 102,Level 15,State 1,Line 4
')'附近的语法不正确。
正确的语法是什么?我不明白为什么我会收到此错误,因为我认为这是完全合法的SQL Server语法
答案 0 :(得分:6)
您需要子查询的别名:
SELECT TOP 1 t.*
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
) t
编辑:
我犹豫要补充一点,使用top
而不使用order by
没有意义。你需要一些订购。所以,你可以这样做:
SELECT TOP 1 t.*
FROM (SELECT TOP 8 *
FROM [BP_BasicPolicy ]
ORDER BY col1 ASC
) t
ORDER BY col2 DESC;
实际上,你不需要最外层的order by
,但它仍然是一个好主意。
如果没有order by
,您可以这样做:
SELECT TOP 1 t.*
FROM [BP_BasicPolicy ] ;
这将选择一个任意行。对于特定的一个,请使用order by
。
答案 1 :(得分:0)
您的查询可以简化如下,但如果您的意图不是这样,请指明目标,欢呼:)
SELECT TOP 1 * FROM [BP_BasicPolicy ]