2016-03-02 67 views
1

正如标题所说,我试图插入到从2个表中选择值的1个表中。查询给我一个错误mysql插入tbl(从2表中选择)

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

您需要指定选择哪些列并确保选定的列与表def的表定义匹配 – LKW

回答

0

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

0

首先,学会使用恰当的显式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;