oracle

Oracle UUID与树形结构复制

获得uuid(32位)  :  select sys_guid() from dual 会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。

 

同一张表中复制树形结构:

--复制表数据
create table ETMT_SUBJECT_CP as select * from ETMT_SUBJECT;
-- 新增一个uuid字段
alter table ETMT_SUBJECT_CP add uuid VARCHAR2(50);
-- 为每条记录生成一个uuid
UPDATE ETMT_SUBJECT_CP t
SET t.uuid = sys_guid();
--获取复制的树的结构,新的id为uuid,新的parent_id为puuid
SELECT tt.id,tt.parent_id,tt.subject_name,tt.uuid,tt2.uuid puuid
FROM etmt_subject_cp tt LEFT JOIN etmt_subject_cp tt2 ON tt2.id = tt.parent_id;
--将上述结果集插入原来的表中
INSERT INTO etmt_subject
SELECT tt.uuid,tt2.uuid puuid,tt.subject_name,t.~~~
FROM etmt_subject_cp tt LEFT JOIN etmt_subject_cp tt2 ON tt2.id = tt.parent_id;
---删除临时过渡表
DROP ETMT_SUBJECT_CP;

Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法

11g里面用listagg:

select listagg(name,',') within (order by id) from table


10g里面用wm_concat:
select wm_concat(name) from table

wm_concat是undocument的
listagg是11g document的

oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat(column)函数使用方面感兴趣的话,不妨一看。
shopping:
-----------------------------------------
u_id       goods            num
------------------------------------------
1                苹果                2
2                 梨子               5
1                 西瓜               4
3                 葡萄               1
3                香蕉                1
1               橘子                 3
=======================
想要的结果为:
--------------------------------
u_id          goods_sum
____________________
1              苹果,西瓜,橘子
2              梨子
3              葡萄,香蕉
---------------------------------
1.select u_id, wmsys.wm_concat(goods) goods_sum  2. 3.from shopping  4. 5.group by u_id  
想要的结果2:
--------------------------------
u_id          goods_sum
____________________
1              苹果(2斤),西瓜(4斤),橘子(3斤)
2              梨子(5斤)
3              葡萄(1斤),香蕉(1斤)
---------------------------------
使用oracle wm_concat(column)函数实现:
select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum  
from shopping  
group by u_id  
mysql---group_concat

转载于:https://my.oschina.net/dylan2hdf/blog/888422

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值