mysql插入tbl(从2个表中选择)

Posted

技术标签:

【中文标题】mysql插入tbl(从2个表中选择)【英文标题】:mysql insert into tbl (select from 2 table) 【发布时间】:2016-03-02 01:51:16 【问题描述】:

正如标题所说,我正在尝试从 2 个表中选择值插入 1 个表中。查询给了我一个错误

INSERT INTO def 
SELECT * from table1, table2
Where time = table1.time

【问题讨论】:

您需要指定要选择的列并确保选择的列与表def的表定义匹配 【参考方案1】:

def 表列定义必须等于连接的table1table2 列定义。否则,您必须定义 def 表中的哪一列与 SELECT 的输出进行映射。

【讨论】:

【参考方案2】:

首先,学习使用正确的显式JOIN 语法。 从不FROM 子句中使用逗号。

您的查询返回错误,因为大概两个表都有一个名为time 的列。因此,您需要表别名或using 子句。

其次,始终明确列出 insertselect 的列。不要依赖默认排序。因此,正确编写的查询看起来更像这样:

INSERT INTO def(col1, col2, . . . )
    SELECT t1.col1, t2.col2, . . .
    FROM table1 t1 JOIN
         table2 t2
         ON t2.time = t1.time;

【讨论】:

以上是关于mysql插入tbl(从2个表中选择)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用插入的 ID 在同一个 MySQL 表中复制记录

使用 mysql 别名从 2 个表中选择列

SQL中根据表的顺序选择数据

php mysql如何从2个表中选择我需要的[关闭]

mysql php从2个表中选择字段,具有相同的字段名称[重复]

MySQL 从 3 个表中选择不同的产品