数据库问题,sqlserver top和oracle的rownum有什么不同呢下面语句是否可以相互转换

2024-12-14 21:18:00
推荐回答(3个)
回答1:

sqlserver中的查询语句(select top 50 * from userinfo)和oracle中查询语句(select * from userinfo where rownum<51)是否可以这样翻译过来
是的

再不牵扯到排序的时候完全等同。如楼上所言,如果有ORDER BY就有次序先后之分了。
ORACLE rownum是对所有数据的物理排序,
就是SELECT * FROM TAB里面,其优先级高于order by。所以如果有select * from tab order by xxx where rownum < xxx你永远得不到正确结果,只能
SELECT * FROM (SELECT * from tab ORDER BY xxxx) t where rownum
SQL Server top是有序排序,是top始终只针对最后的结果集,也就是最后一个操作结果。
优先级低于ORDER BY

回答2:

你好,我用过sql server与oracle,这两个语句的意思完全一样。

回答3:

select top 50 * from userinfo 和 select * from userinfo where rownum<51 这种时候是一样的.
但是如果有order by 子句时候就完全不一样了.

top: 在orderby之后,取排序的前N条记录.
rownum:取出N条记录,然后orderby,最后把排序后的记录给你.

明白了?