在 POSTGRESQL 中使用带有 INSERT 语句的 WITH 子句

Using WITH clause with INSERT statement in POSTGRESQL

我有一个要求,我需要从另一列中获取一列 table 并将该列数据与其他一些数据插入另一列 table。

示例:

如果 cust_id='11' 那么我需要从客户 table 获取 cust_code(比方说 returns cust_code='ABCD'),然后使用 cust_code 和一些其他数据插入到 table_1 中,如下所示:

WITH get_cust_code_for_cust_id AS (
    SELECT cust_code FROM cust WHERE cust_id=11
)

INSERT INTO public.table_1(
    cust_code, issue, status, created_on)
    VALUES (SELECT cust_code FROM get_cust_code_for_cust_id, 'New Issue', 'Open', current_timestamp)

但是这个查询不起作用,因为我们还没有调用 get_cust_code_for_cust_id 查询。

我的偏好是一些带有 WITH 子句的查询,但任何其他答案也将不胜感激。

如果 insert 语句的来源是 select,请 不要 使用 VALUES 关键字。

WITH get_cust_code_for_cust_id AS (
    SELECT cust_code 
    FROM cust 
    WHERE cust_id=11
)
INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp 
FROM get_cust_code_for_cust_id;

虽然你真的不需要 CTE:

INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp  
FROM cust 
WHERE cust_id=11