PostgreSQL:如何在INSERT时为指定列复用相同值
批量插入时复用同一字段值的正确SQL写法
你原来的语法错误在于INSERT语句的列定义部分不能直接赋值,列列表里只能写字段名,不能加=1这类赋值操作。以下是几种正确的实现方式:
方法1:VALUES子句中重复指定固定值
这是最直观的写法,适合数据量不大的场景:
INSERT INTO choices (q_id, c_text) VALUES (1, 'Milky Way'), (1, 'Galactus'), (1, 'Omicron Persei 8');
方法2:结合数组与unnest函数(PostgreSQL专属)
如果需要插入大量选项,不想重复写q_id值,可以用PostgreSQL的unnest函数拆分数组:
INSERT INTO choices (q_id, c_text) SELECT 1, unnest(ARRAY['Milky Way', 'Galactus', 'Omicron Persei 8']);
方法3:通过子查询生成多行数据
用子查询生成选项文本,再统一关联固定的q_id:
INSERT INTO choices (q_id, c_text) SELECT 1, c_text FROM ( VALUES ('Milky Way'), ('Galactus'), ('Omicron Persei 8') ) AS temp_table (c_text);
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

