我有以下两张表
表c
id | 类型 |
---|---|
1 | B1 |
2 | B2 |
3 | B3 |
桌子
id | s_id | s_类型 |
---|---|---|
1 | 2 | C1 |
2 | 2 | C2 |
3 | 3 | C2 |
现在我想在表中为 B 为 B1 或 B2 的所有行插入新行。我通过使用以下语句来做到这一点:
for id in (select id from table where type = 'B1')
loop
begin
next_id = get_next_id('id_seq', next_id, 1000);
insert into s(id, s_id, s_type)
values (next_id, id, 'C2');
end;
end loop;
for id in (select id from table where type = 'B2')
loop
begin
next_id = get_next_id('id_seq', next_id, 1000);
insert into s(id, s_id, s_type)
values (next_id, id, 'C1');
end;
end loop;
现在我想知道我是否可以在 1 个循环中做到这一点,如果可以,它是否有意义。
INSERT INTO table(id, A, B)
SELECT
get_next_id('id_seq', next_id, 1000),
id,
CASE
WHEN B = 'B1' THEN 'A2'
WHEN B = 'B2' THEN 'A3'
END
FROM
table
WHERE
B IN ('B1', 'B2');