ORACLE 中的行数

发布于 2024-10-12 06:12:57 字数 61 浏览 2 评论 0原文

我想检索 ORACLE 9i 中第 4 位的记录。 我可以在 WHERE 子句中比较 ROWNUM=4 吗?

I want to retrive record at 4th position in ORACLE 9i.
Can I compare ROWNUM=4 in the WHERE clause??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

琉璃梦幻 2024-10-19 06:12:57

不,ROWNUM 是在 WHERE 子句求值之后分配的,因此它不能“跳过”rownum 1 到 3。

此外,它是在排序之前分配的。

这是Oracle最烦人的“特性”。他们确实需要实施 LIMIT/OFFSET。

你需要做类似的事情

  select * from (
      select a.*, rownum rn from (
         select the_data from the_table order by the_order 
      ) a where rownum < 5
  ) where rn = 4

No, ROWNUM is assigned after the WHERE clause is evaluated, so it cannot "skip" rownum one to three.

Furthermore, it is assigned BEFORE sorting.

This is the most annoying "feature" of Oracle. They really need to implement LIMIT/OFFSET.

You need to do something like

  select * from (
      select a.*, rownum rn from (
         select the_data from the_table order by the_order 
      ) a where rownum < 5
  ) where rn = 4
我不在是我 2024-10-19 06:12:57
SELECT * 
FROM  
( SELECT mt.mydata
  FROM myTable mt
  WHERE mt.myId = xxx
  ORDER BY mt.myDate DESC
) 
WHERE ROWNUM <= 10;
SELECT * 
FROM  
( SELECT mt.mydata
  FROM myTable mt
  WHERE mt.myId = xxx
  ORDER BY mt.myDate DESC
) 
WHERE ROWNUM <= 10;
以酷 2024-10-19 06:12:57

你为什么不尝试这样的事情:)

select * from (select rownum sn, tn.* from tablename tn ) where sn=4

这里tablename是你的表的名称,tn是分配给它的别名。

why don't you try something like this :)

select * from (select rownum sn, tn.* from tablename tn ) where sn=4

here tablename is the name of your table and tn is the alias assigned to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文