在 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
我有一个要求,我需要从另一列中获取一列 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