我想使用這些 SQL 查詢在 PostgreSQL 中生成測驗資料:
INSERT into onboarding_tasks (business_name, updated_at)
SELECT
'Business name ' || id AS business_name,
(NOW() (random() * (NOW() '90 days' - NOW())) '30 days') AS updated_at
FROM generate_series(1,25) as g(id);
使用父 id 將 4 個專案生成到資料庫表中:
INSERT into onboarding_task_item (created_at, description, task_id)
SELECT
(NOW() (random() * (NOW() '90 days' - NOW())) '30 days') AS created_at,
left (md5(random()::text), 10) AS description,
ot.id,
j.id AS gen_id
FROM onboarding_tasks ot
CROSS JOIN generate_series(1,4) j(id);
當我運行第二個 SQL 查詢時,我得到:
Caused by: org.postgresql.util.PSQLException: ERROR: INSERT has more expressions than target columns
Position: 486
我不確定應該如何編輯表格專案ot.id, j.id AS gen_id以使其正確使用。
你知道我該如何解決這個問題嗎?
uj5u.com熱心網友回復:
因為你在 insert 陳述句中使用了三列,INSERT INTO onboarding_task_item (created_at, description, task_id)而在 select 陳述句中發送了四列
SELECT
... AS created_at, -- first column
... AS description, -- second column
ot.id, -- third column
j.id AS gen_id -- fourth column
FROM
onboarding_tasks ot
CROSS JOIN
generate_series(1,4) j(id);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/353002.html
標籤:sql PostgreSQL
