【发布时间】:2016-03-02 01:51:16
【问题描述】:
正如标题所说,我正在尝试从 2 个表中选择值插入 1 个表中。查询给了我一个错误
INSERT INTO def
SELECT * from table1, table2
Where time = table1.time
【问题讨论】:
-
您需要指定要选择的列并确保选择的列与表def的表定义匹配
正如标题所说,我正在尝试从 2 个表中选择值插入 1 个表中。查询给了我一个错误
INSERT INTO def
SELECT * from table1, table2
Where time = table1.time
【问题讨论】:
def 表列定义必须等于连接的table1 和table2 列定义。否则,您必须定义 def 表中的哪一列与 SELECT 的输出进行映射。
【讨论】:
首先,学习使用正确的显式JOIN 语法。 从不在FROM 子句中使用逗号。
您的查询返回错误,因为大概两个表都有一个名为time 的列。因此,您需要表别名或using 子句。
其次,始终明确列出 insert 和 select 的列。不要依赖默认排序。因此,正确编写的查询看起来更像这样:
INSERT INTO def(col1, col2, . . . )
SELECT t1.col1, t2.col2, . . .
FROM table1 t1 JOIN
table2 t2
ON t2.time = t1.time;
【讨论】: