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

jogvjijk  于 2024-01-05  发布在  Mysql
关注(0)|答案(1)|浏览(209)

此问题在此处已有答案

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

  1. table1:
  2. =======
  3. id: | value:
  4. ------------
  5. 1 | 10
  6. 2 | 20
  7. 3 | 30

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

  1. table2:
  2. =======
  3. id: | value1: | value2:
  4. -----------------------


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

  1. insert into table2 (value1, value2)
  2. values
  3. (
  4. (select value from table1),
  5. 100
  6. );


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

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


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

  1. insert into table2 (value1, value2)
  2. 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是选择列表中的文字:

  1. INSERT INTO table2 (value1, value2)
  2. SELECT value, 100
  3. FROM table1

字符串

相关问题