具有通用选择的 SQL 多重插入

标签 sql mysql5

我必须使用以下模式将数据插入到表中

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/

相关文章:

sql - 连接多列

sql - 提取日/小时/分钟

mysql - 在一个巨大的表中处理删除/插入/选择

mysql - 将国家分组并计数

sql - 在没有最后修改列的情况下查询最后修改时间

php - 有没有办法在sql查询中返回多个不相关的结果?

mysql - 如何导入数据库,更新已更改的产品,删除已删除的产品

MySQL 新关键字

iis-7.5 - 如何在 IIS7.5 Express 上运行 PHP?

information-schema - information_schema 数据库代表什么?