我必须使用以下模式将数据插入到表中
INSERT INTO tablename (a, b) VALUES (
(123, (SELECT foo FROM someothertable WHERE some_condition)),
(456, (SELECT foo FROM someothertable WHERE some_condition)),
(789, (SELECT foo FROM someothertable WHERE some_condition)),
...
对于
b
列,所有插入的行都具有相同的值,我想将其分解。我可以手动执行子选择并将值粘贴到其中,但这会破坏我正在编写的脚本集中的封装。我可以在同一个查询中使用纯 SQL 执行此操作吗?
最佳答案
INSERT INTO tablename (a, b)
SELECT X.bar, S.foo
FROM someothertable S
CROSS JOIN
(SELECT 123 AS bar UNION ALL SELECT 456 UNION ALL SELECT 789) X
WHERE some_condition
关于具有通用选择的 SQL 多重插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9277349/