mysql - 从另一个具有不同列数的表中插入表(MySQL)

标签 mysql sql

问题,为什么这个剂量不起作用?

create table one (a int(1) default 1, b int(2));

create table two (b int(1));

insert into one select * from two;

错误:

Column count doesn't match value count at row 1

一个知道,一个可以算数,但是为什么,哲学上? 数据库知道,从表two 中插入列的名称是b,知道表one 中的列a > 的默认值等于 1.. 那么,执行这个查询有什么问题呢?

一般来说 - 如果这种方式不可能,我该如何做,而不是手动,没有列及其计数的信息?

我知道: two 始终具有与表 one 相同的所有列。但是表 one 也有另一列,它们有一些默认值。

有什么办法吗?将 two 中的所有数据插入到 one 中,并用一些默认值或其他值填充剩余的列!

需要帮助! 谢谢你很配!

最佳答案

当你运行时:

insert into one
    select * from two;

SQL 引擎自动放入隐含的列。

  • 对于insert,这是声明顺序的列列表。
  • 对于 *,这是声明顺序的列列表。

没有按名称“匹配”列,只有每个表中的列列表。

所以,查询实际上是:

insert into one(a, b)
    select b from two;

这对我来说像是一个错误。

故事的寓意?编写您想要的代码。始终包含列列表,特别是对于 insert 语句。所以写:

insert into one(b)
    select b from two;

关于mysql - 从另一个具有不同列数的表中插入表(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647999/

相关文章:

MySQL INNER JOIN 查询多个匹配项,除非 if

sql - 如何在Hive中防止无限制的sql?

python - pandas 中 pd.join (how ='left' ) 的意外结果

mysql - 解析时间差异并划分mysql

mysql - 如何从嵌套选择中获取嵌套的两个值? mysql

javascript - 单击按钮后在模式弹出窗口上显示基于所选 ID 的数据 php mysql

python - Google App Engine Python 中是否有等效的 SQL View ?

mysql - 需要有关存储大型 3D 数组的建议

java - 如何在JSP窗体中插入外键存入数据库?

mysql - 优化不在子查询MYSQL