首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LIMIT子句的解决方案兼容Oracle和MySQL

LIMIT子句的解决方案兼容Oracle和MySQL
EN

Stack Overflow用户
提问于 2013-05-31 00:57:06
回答 4查看 310关注 0票数 2

是否有兼容Oracle和MySql的解决方案来限制查询返回的行数?

例如,在mysql中有LIMT子句

SELECT * FROM myTable LIMT 10;

在Oracle中,我们对rownum列使用条件

我想要一些同时适用于MySQL和Oracle的代码

EN

回答 4

Stack Overflow用户

发布于 2013-05-31 02:09:36

如果您的表具有唯一的id列(或列的组合),则可以执行以下操作:

代码语言:javascript
复制
select t.*
from t
where (select count(*) from t t2 where t2.id <= t.id) <= 10;

SQL子句中的相关子查询是标准的where语法,因此它可以在任何数据库中运行。

在小桌子上的性能应该还可以。通过在t(id)上建立索引,它将得到改进。

票数 1
EN

Stack Overflow用户

发布于 2013-05-31 01:06:57

在oracle中它是

代码语言:javascript
复制
select * from mytable where rownum < 11

另一种方法是分析函数,但mysql不支持这种方法。

票数 0
EN

Stack Overflow用户

发布于 2013-05-31 01:25:13

假设存在完全自动递增(没有数字被跳过)字段,并且没有其他条件

获取最后5条记录

代码语言:javascript
复制
SELECT * FROM account
HAVING (SELECT MAX(id) FROM account) - 5 < id  

获取前5条记录

代码语言:javascript
复制
SELECT * FROM account
HAVING (SELECT MIN(id) FROM account) + 5 > id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16841883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档