精华内容
下载资源
问答
  • 使用union all可以从数据库检索固定条数的数据,不足以空数据补齐 --返回10数据 select t.id,t.contract_num,t.contract_line_num from( select id,contract_num,contract_line_num from cg_procure_contract_...

    使用union all可以从数据库检索固定条数的数据,不足以空数据补齐

    --返回10条数据

    select t.id,t.contract_num,t.contract_line_num from(

    select id,contract_num,contract_line_num from cg_procure_contract_detail 
    where contract_num='HT20161027175' 
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual
    union all
    select null,null,null from dual) t
    where rownum<=10;
    展开全文
  • ORACLE 分页查询 并返回 记录条数

    千次阅读 2018-12-04 22:35:21
    SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT c1, c2, count(*) over () total -----依靠此句查出 数量...
    SELECT * FROM (
    
            SELECT A.*, ROWNUM RN  FROM (
            
                        SELECT 
                        c1,
                        c2,
                        count(*) over () total   -----依靠此句查出 数量总和
                        FROM TABLE_NAME
            
            ) A  WHERE ROWNUM <= 40
            
    )WHERE RN >= 21

    例子:

    
    SELECT T.* FROM ( 
    
    
              SELECT ROWNUM AS ROWNO, R.* FROM( 
    
    
                      SELECT   
                       N.NRW_PER, TO_CHAR( N.MDATE ,'YYYY-MM'  )  MDATE ,N.OTITLE, N.OID,  N.CLSID, N. HB_PER 
                      ,L.LOST_PER LOST_PER , L.HB_PER LOST_HB_PER , L.LOST_POWER  LOST_POWER 
                      ,S.MFLOW AS S_MFLOW
                      ,G.MFLOW AS G_MFLOW
                      ,COUNT(*) OVER () total        
                      FROM DW_NRW_MONTH N  
                      LEFT JOIN DW_LOST_MONTH L ON L.MDATE = N.MDATE AND  L.OID = N.OID 
                      LEFT JOIN DW_SS_MONTH  S ON  S.MDATE = N.MDATE AND  S.OID = N.OID 
                      LEFT JOIN DW_GS_MONTH  G ON  S.MDATE = N.MDATE AND  G.OID = N.OID 
                      WHERE  1=1 
                      AND   N.NRW_PER >=0  AND   N.NRW_PER <=30  --区间
                      AND  N.MDATE >= TO_DATE('2018-01-01','YYYY-MM-DD') --开始时间
                      AND  N.MDATE <= TO_DATE('2018-01-02','YYYY-MM-DD') --结束时间 
                      AND   Exists (SELECT  MP_CHILDREN FROM dw_md_object_map_index  WHERE MP_PARENT =2 and MP_CHILDREN =   N.OID )  --父子级关系   
                      ORDER BY  MDATE                           
           
    
    
               ) R  WHERE ROWNUM <= 20
               
     
     ) T  WHERE T.ROWNO >= 5

    结果:

     

    展开全文
  • mybatis+oracle批量插入sql返回成功条数

    千次阅读 2017-07-13 09:25:41
    mapper.xml文件    insert into T_WREGIME_SQYJ  (WRINFOID,WRTITLE,WRDETAIL)    (select  #{item.WRINFOID,jdbcType=VARCHAR},  #{item.WRTITLE,jdbcType=VARCHAR},
    mapper.xml文件
    
     
              insert into T_WREGIME_SQYJ
                (WRINFOID,WRTITLE,WRDETAIL)
     
              (select  
                      #{item.WRINFOID,jdbcType=VARCHAR},
                      #{item.WRTITLE,jdbcType=VARCHAR},
                      #{item.WRDETAIL,jdbcType=VARCHAR}   
          from  dual)
    展开全文
  • oracle限制查询条数-rownum用法详解

    万次阅读 2017-06-09 14:52:03
    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行,且rownum不能以任何表的名称作为前缀。 (1) rownum 对于...

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

    (1) rownum 对于等于某值的查询条件
    如果希望找到学生表中第一条学生的信息,可以使用rownum=1作为条件。但是想找到学生表中第二条学生的信息,使用rownum=2结果查不到数据。因为rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件,所以无法查到rownum = n(n>1的自然数)。
    SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标)
    SQL> select rownum,id,name from student where rownum =2; 
        ROWNUM ID     NAME
    ---------- ------ ---------------------------------------------------

    (2)rownum对于大于某值的查询条件
       如果想找到从第二行记录以后的记录,当使用rownum>2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum> n(n>1的自然数)这种条件依旧不成立,所以查不到记录。

    查找到第二行以后的记录可使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列
    SQL>select * from(select rownum no ,id,name from student) where no>2;
            NO ID     NAME
    ---------- ------ ---------------------------------------------------
             3 200003 李三
             4 200004 赵四

    (3)rownum对于小于某值的查询条件
    rownum对于rownum<n((n>1的自然数)的条件认为是成立的,所以可以找到记录。
    SQL> select rownum,id,name from student where rownum <3;
        ROWNUM ID     NAME
    ---------- ------ ---------------------------------------------------
            1 200001 张一
            2 200002 王二

    查询rownum在某区间的数据,必须使用子查询。例如要查询rownum在第二行到第三行之间的数据,包括第二行和第三行数据,那么我们只能写以下语句,先让它返回小于等于三的记录行,然后在主查询中判断新的rownum的别名列大于等于二的记录行。但是这样的操作会在大数据集中影响速度。
    SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
            NO ID     NAME
    ---------- ------ ---------------------------------------------------
             2 200002 王二
             3 200003 李三

    (4)rownum和排序   
    Oracle中的rownum的是在取数据的时候产生的序号,
    所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
    SQL> select rownum ,id,name from student order by name;
        ROWNUM ID     NAME
    ---------- ------ ---------------------------------------------------
             3 200003 李三
             2 200002 王二
             1 200001 张一
             4 200004 赵四
    可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询;
    SQL> select rownum ,id,name from (select * from student order by name);
        ROWNUM ID     NAME
    ---------- ------ ---------------------------------------------------
             1 200003 李三
             2 200002 王二
             3 200001 张一
             4 200004 赵四
    这样就成了按name排序,并且用rownum标出正确序号(有小到大)
    笔者在工作中有一上百万条记录的表,在jsp页面中需对该表进行分页显示,便考虑用rownum来作,下面是具体方法(每页显示20条): 
    “select * from tabname where rownum<20 order by name" 但却发现oracle却不能按自己的意愿来执行,而是先随便取20条记录,然后再order by,后经咨询oracle,说rownum确实就这样,想用的话,只能用子查询来实现先排序,后rownum,方法如下: 
    "select * from (select * from tabname order by name) where rownum<20",但这样一来,效率会低很多。 
    后经笔者试验,只需在order by 的字段上加主键或索引即可让oracle先按该字段排序,然后再rownum;方法不变:    “select * from tabname where rownum<20 order by name"

    取得某列中第N大的行

    select column_name from 
    (select table_name.*,dense_rank() over (order by column desc) rank from table_name) 
    where rank = &N; 
     假如要返回前5条记录:

      select * from tablename where rownum<6;(或是rownum <= 5 或是rownum != 6) 
    假如要返回第5-9条记录:

    select * from tablename 
    where … 
    and rownum<10 
    minus 
    select * from tablename 
    where … 
    and rownum<5 
    order by name 
    选出结果后用name排序显示结果。(先选再排序)

    注意:只能用以上符号(<、<=、!=)。

    select * from tablename where rownum != 10;返回的是前9条记录。 
    不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立。

    另外,这个方法更快:

    select * from ( 
    select rownum r,a from yourtable 
    where rownum <= 20 
    order by name ) 
    where r > 10 
    这样取出第11-20条记录!(先选再排序再选)

    要先排序再选则须用select嵌套:内层排序外层选。 
    rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2! 
    rownum 是在查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:

    1: 假如判定条件是常量,则: 
    只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的;大于一个数也是没有结果的 
    即 当出现一个 rownum 不满足条件的时候则 查询结束 this is stop key(一个不满足,系统将该记录过滤掉,则下一条记录的rownum还是这个,所以后面的就不再有满足记录,this is stop key)

    2: 假如判定值不是常量,则:

    若条件是 = var , 则只有当 var 为1 的时候才满足条件,这个时候不存在 stop key ,必须进行full scan ,对每个满足其他where条件的数据进行判定,选出一行后才能去选rownum=2的行……

    展开全文
  • Oracle左连接返回记录中一记录的查询语句,更具指定条件分组排序,返回各组中第一记录
  • ORACLE返回各类型中的第一记录

    千次阅读 2013-01-10 10:17:24
    有的时候,一张表中通过某个字段区别该记录所指的对象类型,比如成绩表 问题提出(其实很简单了):假设有一个年级,500人,某次期末考,考6门课,结果将是3000成绩记录,并将这3000记录存入tb_score_...
  • Oracle限制返回行数(Rownum)与随机返回n记录(dbms_random) 1、Rownum限制返回的行数 Rownum依次对返回的每一数据做一个标识,使用Rowmun能限制返回的行数。例如,返回2数据不能直接用“rownum = 2”,要...
  • Oracle动态SQL返回结果和结果集

    千次阅读 2016-09-09 21:23:35
    Oracle动态SQL返回结果和结果集 1. DDL 和 DML  /*** DDL ***/ begin  EXECUTE IMMEDIATE 'drop table temp_1';  EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';  end;  ...
  • 可以通过下列代码了解Ref Cursor的使用,但是能得到返回的记录吗?我现在以我这几天的研究的水平告诉大家,不行, 只有两个方法可以实现,1.循环两次游标,2.或者通过count(1) over ()添加一列,来得到返回...
  • Oracle 格式化数字

    万次阅读 2015-06-12 16:31:42
    那么 Oracle 支持哪些格式呢?看看下面的表格吧 Format Description 9 代表一位任意数字 . 小数点 D 本地化小数点(NLS_NUMERIC_CHARACTER) ,...
  • Mybatis配置返回为修改影响条数

    万次阅读 2018-05-23 10:50:36
    前言mybatis执行update()方法默认返回为匹配的更新记录条数,现在需要将update()方法修改为与mysql执行一致返回影响条数,修改jdbc连接如下即可:添加useAffectedRows=true配置。jdbc:mysql://jdbc.host/{jdbc.db}?...
  • 首先在oracle里面的序号一般使用rownumselect rownum,t.* from T_USER_BASICINFO t 但需要用其中某个字段排序的情况,rownum就不能按顺序排序了。这里用u_level字段排序select rownum,t.* from T_USER_BASICINFO t ...
  • Oracle函数返回Table集合

    千次阅读 2018-12-26 14:36:17
    Oracle table()函数查询函数返回的结果集 2015年12月13日 22:42:51 warrenjiang 阅读:7452 版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批。 本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理...
  • Left join限制返回条数,条件

    千次阅读 2020-06-30 10:13:18
    有时候关联查询并不需要太多子表数据 例如 我们只需要关联查询出两
  • Oracle存储过程返回结果集

    万次阅读 2017-12-15 15:25:19
    Oracle存储过程返回结果集都是以SYS_REFCURSOR的方式返回的,我们一般看不到这个返回的具体内容,今天我们换了一种变通的方式来处理存储过程返回的结果集,让我们在PL/SQL中可以查看Oracle自定义函数返回的结果集。...
  • oracle function 返回自定义类型Table

    千次阅读 2016-11-24 11:40:13
    oracle function 返回自定义类型Table 1.实现效果 输入id,名称,行数,输出指定id+行数索引(0开始),一共输出指定行数. 2.创建自定义类型 /* 返回Table 1.定义固定类型的row 2.定义包含row的Table */ --...
  • 最近在使用java验证excel表单元格的信息,数据量非常大,而且验证的规则比较复杂,如果单纯使用程序的验证的话,效率将非常低,考虑到oracle存储过程是可编译的,每次编译之后都会将数据放入高速缓存当中,下次再取...
  • ORACLE函数Function返回数据集合

    千次阅读 2015-08-14 18:01:17
    Oracle中的Function可以返回自定义的数据集,记录参考如下:   1,Object对象 /*自定义类型 OBJECT Type*/ CREATE OR REPLACE TYPE EMP_ID_TYPE AS OBJECT(org_cd varchar2(10));   2,Table对象 /*自定义...
  • 在程序开发中,常用到返回结果集的存储过程,这个在MySQL和sql server 里比较好处理,直接返回查询结果就可以了,但在Oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得出上一头汗:),这里我简单...
  • Oracle中批量产生指定条数的记录

    千次阅读 2013-11-06 17:36:18
    1、批量产生10万客户信息插入到pers表中 2、客户编号不能重复、客户姓名不能重复、客户编号从100000开始   解决方法: insert into pers(persnbr,persname) values select (level-1)+100000,‘客户测试...
  • def makeDictFactory(cursor): columnNames = [d[0] for d in cursor.description] def createRow(*args): return dict(zip(columnNames, args)) return createRow def makeNamedTupleFactory(...
  • 关于ORACLE返回指定行数的SQL写法

    千次阅读 2013-01-10 09:55:11
    ORACLE:  由于不能采用类似SQL SERVER 的 Top num写法: SELECT TOP 100 * FROM table_name 因而必须另劈犀径: Solution: SELECT * FROM tb_name WHERE rownum between 20 and 30; SELECT * FORM ( ...
  • oracle自定义函数返回一个表类型
  • oracle返回n行记录的方法

    千次阅读 2004-10-25 17:16:00
    如果你只希望返回前十行紀錄,你可以這樣寫: SELECT * FROM table WHERE ROWNUM但是下面的語句是不對的: SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM這是因為 Oracle 認為這個件不成立,
  • ASP.NET 往oracle插入一数据并返回ID

    千次阅读 2009-09-13 09:10:00
    1、运用序列 StringBuilder strSql = new StringBuilder(); strSql.Append("begin"); strSql.Append(" insert into TEST.PERSON(PID,PNAME,PAGE)");... 注意:执行多sql语句不能有物理换行
  • sql限定数据返回条数TOP 子句

    千次阅读 2018-10-08 17:11:19
    现在,我们希望从 “Persons” 表中选取头两记录。 SQL Server 的语法: SELECT TOP 2 * FROM Persons; MySQL 语法: SELECT * FROM Persons LIMIT 2; Oracle 语法: SELECT * FROM Persons WHERE ROWNUM &lt;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 306,324
精华内容 122,529
关键字:

oracle返回条数