根据另一列中的条件插入表中

问题描述 投票:0回答:1

我有以下两张表

表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 个循环中做到这一点,如果可以,它是否有意义。

sql postgresql
1个回答
0
投票
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');
© www.soinside.com 2019 - 2024. All rights reserved.