oracle的ROW_NUMBER()语法如下(可以用来去重):
1、row_number() over(order by column asc)先对列column按照升序,再为每条记录返回一个序列号:
select personalid,row_number() over(order by personalid asc) rn from neogoodsrule
2、row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据进行以column2升序排列
select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule
oracle的merge into语法如下:
判断目标表中有没有符合on()条件中的数据,有了就从原表更新数据,没有就从原表插入数据。
merge into 目标表 a
using 源表 b
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)
when matched then update set a.更新字段=b.字段
when not macthed then insert into a(字段1,字段2……)values(值1,值2……)
举例:
merge into RME_PORT@resltjt_t a
using ( select * from resltjt_t.TRS_TRS_NE ) rs
on ( a.nms_orig_res_id=rs.nms_orig_res_id ) --条件
when matched then
update set a.super_res_id=rs.TRS_NE_ID
case用法
(CASE B.DELETE_STATE WHEN '1' THEN '全部一致' WHEN '2' THEN 'B有O无' ELSE '' END)
as "DELETE_STATE",
-- 此处用了dbms_lob.substr函数用来操作的大型对象,叫做大型对象定位器,
-- 前面的utl_raw.cast_to_varchar2函数用来将blob转为varchar2
select utl_raw.cast_to_varchar2(dbms_lob.substr(rsp_xml)) from inf_comm_client_calllog t where col3='200980701501593004';
--ROWNUM使用注意
ROWNUM < 2 查询时,只返回1条数据
使用时,若总查询出数据为5条,则rownum < 10条会导致一直查询