等同于SQL Server TOP
发布时间:2020-12-12 16:17:15 所属栏目:MsSql教程 来源:网络整理
导读:在SQL Server中,TOP可能用于返回查询中的前n行.例如, SELECT TOP 100 * FROM users ORDER BY id 可能会用来返回注册一个站点的前100个人. (这不一定是最好的方法,我只是用它作为例子). 我的问题是 – 其他数据库中的TOP等同于Oracle,MySQL,PostgreSQL等?如果
在SQL Server中,TOP可能用于返回查询中的前n行.例如,SELECT TOP 100 * FROM users ORDER BY id 可能会用来返回注册一个站点的前100个人. (这不一定是最好的方法,我只是用它作为例子). 我的问题是 – 其他数据库中的TOP等同于Oracle,MySQL,PostgreSQL等?如果没有等效的关键字,您可以推荐哪些解决方案来实现相同的结果? 解决方法要选择前100行:MySQL和PostgreSQL: SELECT * FROM Table ORDER BY column LIMIT 100 甲骨文: SELECT * FROM ( SELECT t.* FROM table ORDER BY column ) WHERE rownum <= 100 请注意,您需要一个子查询.如果不添加子查询,ROWNUM将以随机顺序选择前10行,然后按列排序. 选择100到300之间的行: MySQL的: SELECT * FROM TABLE ORDER BY column LIMIT 100,200 PostgreSQL的: SELECT * FROM Table ORDER BY column OFFSET 100 LIMIT 200 甲骨文: SELECT * FROM ( SELECT t.*,ROW_NUMBER() OVER (ORER BY column) AS rn FROM table ) WHERE rn >= 100 AND rownum <= 200 请注意,尝试使用ROWNUM BETWEEN 100 AND 200(而不是外部查询中的BETWEEN 100 AND 200)进行简化将在Oracle中返回任何东西! RN BETWEEN 100 AND 200将在Oracle中工作,但效率较低. 有关性能详情,请参阅我博客中的文章: > Oracle: ROW_NUMBER vs ROWNUM (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容