mysql 是否可以在SQL中执行广播作为插入语句的一部分?[重复]

jogvjijk  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(86)

此问题在此处已有答案

Insert into ... values ( SELECT ... FROM ... )(27个回答)
19天前关闭
假设我有一个包含多行数据的表table1

table1:
=======

id: | value:
------------
  1 |     10
  2 |     20
  3 |     30

字符串
另一个表,我刚刚创建的,包含两列:

table2:
=======

id: | value1: | value2:
-----------------------


有没有可能将table1中的行重写,使用这些值插入到table2中?
这本质上是一个复制操作,插入一些额外的固定数据。
下面是我尝试过的:

insert into table2 (value1, value2)
values
    (
        (select value from table1),
        100
    );


这不起作用,因为预期的原因:

ERROR: more than one row returned by a subquery used as an expression


一个可能的解决方案是逐步创建表,一次添加1列。但是,假设这是不可能的,可以用另一种方法吗?
我认为可以通过内部连接来“扩展”table1以获得所需的列数,但我也不认为这是正确的方法。

insert into table2 (value1, value2)
values (select value1, value2 from table1 inner join 100) -- not quite right, want value2 to be set to 100


我们的想法是做一些类似于Python/Pandas“广播”的事情。
也许可以使用临时table。
简单的非SQL方式显然是写一个Python脚本。

d7v8vwbk

d7v8vwbk1#

可以使用insert-select语句,其中100是选择列表中的文字:

INSERT INTO table2 (value1, value2)
SELECT value, 100
FROM   table1

字符串

相关问题