1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbname order by id desc ) where rownum<=10; 下面是关于rownum的介绍================================三. Rownum和row_number() over()的使用ROWNUM是oracle从8开始提供的一个伪列,是把SQL出来的结果
Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了 employee CODE NAME GENDER 001 Tom M 002 Jerry M 003 Ana F salary CODE SALARY 001 2800 002 2500 00
今天看了篇文章,对oracle取前几条数据的方式和说明,总结比较全,学习了,做个记录点.oracle 取前10条记录 以下内容是原始文章内容,用于做留存阅读. 1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbname order by id desc ) where rownum<=10; 下面是关于rownum的介绍===================
(1)oracle使用keep分析函数取最值记录 -- 取工资sal最大的雇员姓名及其工资,以及工资sal最少的雇员姓名及其工资 select deptno, empno, ename, sal, max(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal_man, max(sal) keep(dense_rank FIRST order by sal) over (partition
select ltrim('124532.62879'-floor('124532.62879'),'0.') from dual;select length(66695) from dual; 这两条SQL结合起来,就可以查询出小数点后边部分的小数位数.在Oracle中很经典,也很实用! 下面这个做法也还是经典(推荐使用): 比如有一张表的某字段是 number(10,4)的,但是大多数是3位小数,如何把是4位小数的结果查询出来: select * from tables where (col
在SQL Server里面有top关键字可以很方便的取出前N条记录,但是Oracle里面却没有top的使用,类似实现取出前N条记录的简单方法如下: 方法1:利用ROW_NUMBER函数 取出前5条记录: SELECT NO FROM ( SELECT ROW_NUMBER() OVER (ORDER BY NO) RNO, NO FROM ROWNUM_TEST )WHERE ORDER BY NO ; 取出中间5条记录: SELECT NO FROM ( SELECT ROW_NUMBER()
1.查询某时间段内日期列表 select level,to_char(to_date('2013-12-31','yyyy-mm-dd')+level-1,'yyyy-mm-dd') as date_time from dual connect by level <=to_date('2014-01-03','yyyy-mm-dd')-to_date('2013-12-31','yyyy-mm-dd')+1 2.查询前两个月日期列表 SELECT T.DATE_ID FROM ( ,)+ row
思路: --funcation RemoveSameStr(in_str,splitStr) ;用于去除重复值 ; SELECT b.memberid, RemoveSameStr(wm_concat(b.productidlist),',') AS productidlist FROM BASE_ACCOUNT_BILL_GROUP b GROUP BY b.memberid ; 2.创建 FUNCTION REMOVESAMESTR(OLDSTR VARCHAR2, SIGN VARCHAR
--1.取整(大) select ceil(-1.001) value from dual ; --2.取整(小) select floor(-1.001) value from dual ; --3.取整(截取) select trunc(-1.002) value from dual ; --4.取整(舍入) select round(-1.001) value from dual; 待人以诚,做事用心,对事不对人.
SQL中常常要判断两个时间段是否相交,该如何判断呢?比如两个时间段(S1,E1)和(S2,E2).我最先想到的是下面的方法一.方法一:(S1 BETWEEN S2 AND E2) OR (S2 BETWEEN S1 AND E1).很好理解:一个时间段的开始时间S1在另一个时间中间(S2,E2),或者开始时间S2在另一个时间中间(S1,E1),这个方法比较繁琐 方法二:本方法先考虑这两段时间什么情况下不相交,如图: -----+-----------------+-------------
SELECT * FROM (SELECT * FROM TABLE_NAME ORDER BY COL1) WHERE ROWNUM = 1; 备注: 1.不能给 (SELECT * FROM TABLE_NAME ORDER BY COL1)加别名,会提示无效: 2.只能取第一行,取其他行取不了,比如ROWNUM = 2等就取不了: 3.据说数据量大了会存在效率问题. 以上备注有待研究