oracle数据库中以时间做为子查询如何实现

oracle数据库中以时间做为子查询如何实现,第1张

oracle中临时表有两种

on commit delete row; --默认选项,在commit的时候将数据删除

on commit preserve row; --在commit的时候将数据保留,会话结束后自动删除。

由于第一种是默认值,你的命令里面没加选项默认为commit后删除数据。

而ddl语句(create table 就是一个ddl)发出后,oracle会隐式的提交事务(commit),因此刚刚插入到临时表的数据被自动删除了。 这就是你没查到数据的原因。

改成第二种方式就ok了:

create global temporary table myTable on commit preserve row as select eempno,eename,edeptno from emp e;

前提:

分页参数:size = 20 page = 2;

没有order by的查询;

嵌套子查询,两次筛选(推荐使用)。

SQL语句:

SELECT

FROM (SELECT ROWNUM AS rowno, t

FROM DONORINFO t

WHERE tBIRTHDAY BETWEEN TO_DATE ('19800101', 'yyyymmdd')

AND TO_DATE ('20060731', 'yyyymmdd')

AND ROWNUM <= 202) table_alias

WHERE table_aliasrowno > 20(2-1);

扩展资料:

rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum 又成了1。依此类推,所以永远没有不满足条件的记录。

可以这样理解:rownum是一个序列,是Oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2。

依次类推:当使用“>、>=、=、betweenand”这些条件时,从缓冲区或数据文件中得到的第一条记录的rownum为1,不符合sql语句的条件,会被删除,接着取下条。下条的rownum还会是1,又被删除,依次类推,便没有了数据。

SELECT BDEPTNO,COUNT(BENAME) FROM EMP B,(Select DEPTNO,AVG(SAL) SAL_A FROM EMP GROUP BY DEPTNO) A WHERE BSAL > ASAL_A AND ADEPTNO = BDEPTNO

试一下,看看是否好用。

以上就是关于oracle数据库中以时间做为子查询如何实现全部的内容,包括:oracle数据库中以时间做为子查询如何实现、在oracle数据库中的分页SQL语句怎么写、请教ORACLE子查询怎么使用呀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10198201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存