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
你好,我用过sql server与oracle,这两个语句的意思完全一样。
select top 50 * from userinfo 和 select * from userinfo where rownum<51 这种时候是一样的.
但是如果有order by 子句时候就完全不一样了.
top: 在orderby之后,取排序的前N条记录.
rownum:取出N条记录,然后orderby,最后把排序后的记录给你.
明白了?