原文地址:http://www.dingos.cn/index.php?topic=1688.0
Oracle有rownum用于访问表中行号。那么在SQL Server中是否有等效的呢?或者在SQL Server中如何输出行号?
-----------------------------------
在SQL Server中没有直接等效于Oracle的rownum
-----------------------------------
严格说来,在关系数据库中,表中的行是没有序的并且行号没有正真的意义。如果需要这个功能,可以有如下三种考虑:
- 在表中添加一个自动增长列。
- 使用下列查询为每一行产生一个行号。下列查询为pubs数据库每一行产生一个行号。为这个查询工作,这个表必须哟唯一约束。
-----------------------------------------------
SELECT (SELECT COUNT(i.au_id)
FROM pubs..authors i
WHERE i.au_id >= o.au_id ) AS RowID,
au_fname + ' ' + au_lname AS 'Author name'
FROM pubs..authors o
ORDER BY RowID
----------------------------------------- - 使用临时表实现,将整个结果集存储在一个临时表中,跟有一个由IDENTITY()函数参数的行号。创建临时表代价是比较昂贵的,尤其是对比较大的表进行操作。