在 postgresql 查询中多次使用单个 WITH
Using a single WITH multiple times in postgresql query
如何多次使用第一个 with 语句?
使用如下代码,除了紧随其后的语句之外,我不能将它用于任何其他语句。
WITH insertuser AS (
INSERT INTO
zorro.user (username, firstname, lastname,
accountstatus, roles, creationdatetime)
VALUES('test', 'test', 'test',
'test', 'test', current_timestamp)
RETURNING id
)
INSERT INTO
zorro.email (address, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser;
INSERT INTO
zorro.password (hash, count, user_id)
SELECT 'test', 1, id
FROM insertuser;
INSERT INTO
zorro.phone_number (number, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser;
INSERT INTO
zorro.Question (text, answer, count, user_id)
SELECT 'test', 'test', 1, id
FROM insertuser;
我在代码中的第二个 "FROM insertuser" 附近的第 19 行收到 sql 错误。
我想你可以使用一系列常见的table表达式:
WITH insertuser AS (
INSERT INTO zorro.user (username, firstname, lastname, accountstatus, roles, creationdatetime)
VALUES('test', 'test', 'test', 'test', 'test', current_timestamp)
RETURNING id
),
em as (
INSERT INTO zorro.email (address, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser
RETURNING *
),
p as (
INSERT INTO zorro.password (hash, count, user_id)
SELECT 'test', 1, id
FROM insertuser
RETURNING *
),
pn as (
INSERT INTO zorro.phone_number (number, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser
RETURNING *
)
INSERT INTO zorro.Question (text, answer, count, user_id)
SELECT 'test', 'test', 1, id
FROM insertuser;
我不是 100% 确定 CTE 是否需要 RETURNING
子句。
如何多次使用第一个 with 语句? 使用如下代码,除了紧随其后的语句之外,我不能将它用于任何其他语句。
WITH insertuser AS (
INSERT INTO
zorro.user (username, firstname, lastname,
accountstatus, roles, creationdatetime)
VALUES('test', 'test', 'test',
'test', 'test', current_timestamp)
RETURNING id
)
INSERT INTO
zorro.email (address, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser;
INSERT INTO
zorro.password (hash, count, user_id)
SELECT 'test', 1, id
FROM insertuser;
INSERT INTO
zorro.phone_number (number, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser;
INSERT INTO
zorro.Question (text, answer, count, user_id)
SELECT 'test', 'test', 1, id
FROM insertuser;
我在代码中的第二个 "FROM insertuser" 附近的第 19 行收到 sql 错误。
我想你可以使用一系列常见的table表达式:
WITH insertuser AS (
INSERT INTO zorro.user (username, firstname, lastname, accountstatus, roles, creationdatetime)
VALUES('test', 'test', 'test', 'test', 'test', current_timestamp)
RETURNING id
),
em as (
INSERT INTO zorro.email (address, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser
RETURNING *
),
p as (
INSERT INTO zorro.password (hash, count, user_id)
SELECT 'test', 1, id
FROM insertuser
RETURNING *
),
pn as (
INSERT INTO zorro.phone_number (number, confirmed, count, user_id)
SELECT 'test', false, 1, id
FROM insertuser
RETURNING *
)
INSERT INTO zorro.Question (text, answer, count, user_id)
SELECT 'test', 'test', 1, id
FROM insertuser;
我不是 100% 确定 CTE 是否需要 RETURNING
子句。