SQL-Server 2005中与Oracle的ROWNUM相当的是什么?

3
在 Oracle PL/SQL 中,我习惯这样写:

SELECT * FROM MY_TABLE WHERE ROWNUM <= 100;

为了仅获取名为MY_TABLE的表的前100条记录,您可以使用以下等效的SQL SERVER SELECT语句。

1
按照什么排序?行之间没有“自然”的排序。 - Martin Smith
我刚刚通过添加“2005”来更正问题的标题。 - UltraCommit
5个回答

3

在SQL Server中,您可以使用TOP选择行数。

SELECT TOP 100 * FROM MY_TABLE

2
select top 100 * from tbl

需要列名或使用*号


1
SELECT TOP 100 * FROM MY_TABLE

如果我误解了什么,请原谅。

编辑:必须更快。


1
SELECT TOP 100 * FROM TABLE

您可以使用 where class 进行行筛选。
SELECT TOP 100 * FROM YOURTABLE WHERE YOURCONDITION

1
好的,但我只需要样本记录,因为它们超过了500万条记录。 - UltraCommit
1
@UltraCommit - 如果你只是想要一个“样本”,为什么不指定一个TABLESAMPLE子句? 尽可能清晰地表达你的意图通常是一个好习惯。 - Damien_The_Unbeliever
非常好的评论,Damien_The_Unbeliever。我刚刚尝试了以下内容:select * from my_secret_table tablesample (0.01 percent); - UltraCommit

1
在SQL Server 2012中,您可以使用OFFSETFETCH来确定要返回哪些行。它们在ORDER BY下有记录;这是有道理的,因为在未排序的情况下请求100行会导致不可预测的结果。
同样地,如果您使用其他人的答案,例如TOP,您也应该有一个ORDER BY子句,否则将无法定义将返回哪些行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接