oracle 查询汇总

1.查询所有父节点

select * from (select sys_connect_by_path(dept_name,'-')pname1,sys_connect_by_path(dept_id,'-') pname from web_dept_a start with dept_id = '001.001.045.001.005' connect by prior pre_dept_id = dept_id) where pname <> '-001.001.045.001.005'

 

2.分页查询

SELECT id,title,add_date,source,RELEASE_STATE FROM (SELECT DJ.id,DJ.add_date,DJ.title,DJ.source,DJ.RELEASE_STATE,ROWNUM RN FROM (SELECT id,title,add_date,source,RELEASE_STATE FROM ARTICLE where RELEASE_STATE = 'immediately' and is_del='false' and  ARTICLE_CLASS_id= ? ORDER BY add_date desc) DJ ) WHERE RN BETWEEN ? AND ?;

 

3.查询当前节点的下一级

SELECT (select count(1) from web_dept_a a where a.PRE_DEPT_ID =b.DEPT_ID) as con,dept_id,dept_name,pre_dept_id from web_dept_a b where pre_dept_id = ?

 

4.分组排序获取第一条(https://blog.****.net/qq_34626493/article/details/79892189)

SELECT

*

FROM

( SELECT ROW_NUMBER () over ( partition BY ORG_ID ORDER BY LU_DATE DESC ) ROWI,WEB_PRODUCTION.* FROM WEB_PRODUCTION WHERE IS_DELETE = '0' and auditt='1' and CONTRIBUTE_ID = '5' )

WHERE

ROWI = 1

 

5.查询当天的数据

select * from WEB_PK where trunc(CREATE_TIME)=trunc(sysdate)

 

6、根据a表更新b表(https://www.****.net/gather_20/MtTaQg3sNTE0My1ibG9n.html

oracle 查询汇总

 UPDATE DJ_INFO_SMS_SENT b

SET ( ORG_ID,ORG_NAME) = ( SELECT b1.ORG_ID,b1.ORG_NAME FROM DJ_INFO_SMS_OUTBOX b1 WHERE b.SISMSID = b1.SISMSID )

WHERE

EXISTS (

SELECT

1

FROM

DJ_INFO_SMS_OUTBOX b1

WHERE

b.SISMSID = b1.SISMSID

)

 

7、月份加一(https://blog.****.net/yueyeqingshan/article/details/52710178

oracle 查询汇总

add_months(to_date('2016-07-01', 'yyyy-mm-dd'), 1)

 

8、按组织统计

SELECT

substr( t.ORG_ID, 1, 19 ) hh,

count( t.ORG_ID ),

t.ORG_NAME

FROM

DJ_INFO_SMS_INBOX c

LEFT JOIN ( SELECT DISTINCT a.DESTADDR, a.ORG_ID, a.ORG_NAME FROM DJ_INFO_SMS_SENT a WHERE a.ORG_ID LIKE '001.001.045.001%' ) t ON c.SOURCEADDR = t.DESTADDR

GROUP BY

substr( t.ORG_ID, 1, 19 ),

t.ORG_ID,

t.ORG_NAME

 

9、【Oracle】将A表中有的数据,但是B表中没有的数据,插入到B表中;(https://blog.****.net/River_Continent/article/details/81169643

1.先查询A表中有,但是B表中没有的数据;

 

select a.* form A a where

NO EXISTS(

select b.id from B b where a.id = b.id

);

 

2.将A有B没有的数据,插入到B表中;这里用的不是常规的values,而是insert into table_name +查询的记录;这种模式;如果不是全插入,可以将子查询的全查询改为部分查询;

 

insert into B b(

select a.* form A a where

NOT EXISTS(

select a.id from A a where a.id = b.id

)

);

 

 

9、插入id自增数据

String sql = "insert into DJSSO.sys_user(id, account, password, last_change_password_time) values(DJSSO.sys_user_id.nextval,?,?,?)";

 

10、复制表结构

create table d_table_name as select * from s_table_name where 1=2;

 

 

11、查询和删除重复的数据(https://blog.****.net/w405722907/article/details/72368297

(1)查询

SELECT

a.CONTENT_ID

FROM

JC_CONTENT_EXT a

WHERE

( a.TITLE,a.RELEASE_DATE ) IN ( SELECT TITLE,RELEASE_DATE FROM JC_CONTENT_EXT GROUP BY TITLE,RELEASE_DATE HAVING count( * ) > 1 )

AND ROWID NOT IN ( SELECT min( ROWID ) FROM JC_CONTENT_EXT GROUP BY TITLE,RELEASE_DATE HAVING count( * ) > 1 )

 

(2)删除

DELETE

FROM

JC_CONTENT_EXT

WHERE

( TITLE, RELEASE_DATE ) IN ( SELECT TITLE, RELEASE_DATE FROM JC_CONTENT_EXT GROUP BY TITLE, RELEASE_DATE HAVING count( 1 ) > 1 )

AND ROWID NOT IN ( SELECT min( ROWID ) FROM JC_CONTENT_EXT GROUP BY TITLE, RELEASE_DATE HAVING count( 1 ) > 1 );

12、oracle 更新替换一个字段里面的指定字符串

语法

update table_name set 要更新的字段=replace(要更新的字段,'要替换的字符串','替换后字符串')  where ……

例子

update JC_CONTENT_EXT set TITLE1=replace(TITLE1,'邓娟娟','替换后字符串') where CONTENT_ID =85858

 

13、Oracle 随机获取N条数据

select * from (select * from tablename order by dbms_random.value) where rownum< N;

 

 

14、模糊查询(查询是否包含某个字符串,全模糊查询比like快)

select CONTENT_ID from JC_CONTENT_TXT where instr(JC_CONTENT_TXT.TXT,'天') > 0;