17,377
社区成员
发帖
与我相关
我的任务
分享
merge into a t1
using (select orderid, wm_concat(b.verifycode) w from b group by orderid) t2
on (t1.orderid = t2.orderid)
when matched then
update t1.verifycode = t2.w;
SELECT ORDERID, WMSYS.WM_CONCAT(VERIFYCODE) FROM B GROUP BY ORDERID;
create table a(
refountid varchar2(6) primary key,
verifycodes varchar2(30),
orderid varchar2(3)
)
--
create table b(
id varchar2(7) primary key,
verifycode varchar2(7),
orderid varchar2(3)
)
SQL> select * from a;
REFOUNTID VERIFYCODES ORDERID
--------- ------------------------------ -------
0001 01
0002 02
SQL> select * from b;
ID VERIFYCODE ORDERID
------- ---------- -------
00001 00011 01
00002 00022 01
00003 00033 01
00004 00051 02
00005 00052 02
00006 00053 02
00007 00054 02
7 rows selected
SQL>
SQL> update a
2 set a.verifycodes=(
3 select c.code
4 from (
5 select orderid,wm_concat(verifycode) code
6 from b
7 group by orderid)c
8 where a.orderid=c.orderid)
9 where exists(
10 select 1
11 from b
12 where a.orderid=b.orderid)
13 /
2 rows updated
SQL> select * from a;
REFOUNTID VERIFYCODES ORDERID
--------- ------------------------------ -------
0001 00011,00022,00033 01
0002 00051,00052,00053,00054 02
UPDATE a
SET a.verifycodes =
(SELECT verifycodes
FROM (SELECT orderid, wm_concat(b.verifycode) verifycodes
FROM b
GROUP BY b.orderid) c
WHERE c.orderid = a.orderid)
WHERE EXISTS (SELECT 1 FROM b WHERE b.orderid = a.orderid);