我與PostgreSQL的工作,我的SQL結構:插入許多行,另一個表中返回的ID和更新IDS
CREATE TEMP TABLE users (
id_user serial,
user_name varchar,
id_user_description int
);
CREATE TEMP TABLE user_description (
id_user_description serial,
age int
);
users
表有部分用戶
INSERT INTO users (user_name)
SELECT column1
FROM (
VALUES
('John'),
('Amanda')
) t;
我試圖插入數據到表user_description
,我也需要將插入的行ID更新到表users
。我的查詢是這樣的:
WITH inserted_user_description AS (
INSERT INTO user_description (age)
SELECT age
FROM (
SELECT users.id_user,
t.column1 AS age,
t.column2 AS user_name
FROM (
VALUES
(21, 'John'),
(28, 'Amanda')
) t
INNER JOIN users ON users.user_name = t.column2
) tt
RETURNING id_user_description, tt.id_user
)
UPDATE users SET id_user_description = t.id_user_description
FROM (
SELECT id_user_description, id_user
FROM inserted_user_description
) t
WHERE users.id_user = t.id_user;
,但我得到的錯誤:
ERROR: missing FROM-clause entry for table "tt" LINE 15: RETURNING id_user_description, tt.id_user
我怎麼能解決這個問題?
錯誤m essage與發帖碼不匹配 –
你是什麼意思?爲什麼不?當然,你應該刪除<...>,我刪除多個列 – Jobs
把原來的SQL和錯誤,如果你想幫助 –