如PostgreSQL的manual描述一个可以在一个INSERT
语句添加多行:INSERT从选择多行PostgreSQL中
INSERT INTO films (code, title, did, date_prod, kind) VALUES
('6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
('6120', 'The Dinner Game', 140, DEFAULT, 'Comedy');
还嵌套SELECT
这样的查询工作:
INSERT INTO films (code, title, did, date_prod, kind)
SELECT table.code, 'Tampopo', 110, '1985-02-10', 'Comedy'
FROM other_table AS table2;
然而,我似乎无法想出一个办法,在同一时间做两个:
INSERT INTO films (code, title, did, date_prod, kind)
SELECT
(table.code + 100, 'abc', NULL, t2.date_prod, t2.kind),
(table.code + 200, 'xyz', NULL, t2.date_prod, t2.kind)
FROM other_table AS t2;
如果other_table
只包含(61717 | 'Tampopo' | NULL | '1985-02-10' | 'Comedy')
,结果表是这样的:
code | title | did | date_prod | kind
--------------------------------------------------
61817 | 'abc' | NULL | '1985-02-10' | 'Comedy'
61917 | 'xyz' | NULL | '1985-02-10' | 'Comedy'
This fiddle应进一步解释......
可否请你指出我的地方,我错了。如果可能,我想避免在other_table AS t2
中进行多次查找,因为它是VIEW
,并且需要花费相当多的时间来构建。
'table.code + 100'也不起作用。 'code'似乎是一个字符列,你不能在字符串中使用'+'。 Plus:“HG120”+ 100“的预期结果是什么 - 这没有意义。 –
@a_horse_with_no_name Uff。抱歉。试图让事情变得更清楚......应该是一个'INT'。 – n1000