请问怎么用with as的结果去更新另外一张表
db2吧
全部回复
仅看楼主
level 1
例如:
建表和数据如下:
create table a(
a varchar(12),
b varchar(12)
);
create table b(
a varchar(12),
c varchar(12)
);
insert into a(a,b) values('a','b');
insert into b(a,c) values('a','c');
然后用with as查询时可以的:
with t as(
select a a, c b from b
)
select * from t;
但是用with as的结果去插入或者更新其他表就不知道怎么写了:
with t as(
select a a, c b from b
)
insert into a(a,b)
select * from t;
或者
with t as(
select a a, c b from b
)
merge into a using t on a.a = t.a when matched then update set a.b = c.b
这样就报错了
2018年05月29日 02点05分 1
level 1
2023年6月6日随笔:
偶然遇到了和楼主一样的问题,最后找到了对应的答案,db2的with as用法也被称为CTE(公共表达式),百度上搜关键字“db2 cte” 就可以得到详细的更新语法。
举例说明就是楼主的插入语句可以这样写:
with t as(
select a a, c b from b
)
SELECT * FROM NEW table(
insert into a(a,b)
select * from t
);
以上,顺带感慨下,一位来自五年后的吧友的回复,贴吧有时候对技术问题的关注度,真心不如那些玩乐贴的热度高,不知道是不是时代的悲哀
2023年06月06日 01点06分 2
1