2010-03-04 171 views
23

我有两张表。从一个表中选择并插入另一个表中

表-A(NID,VID,类型,标题,UID)

表-B(ID,questiontext)

我需要插入从表-B记录到表-A。我试过这个:

INSERT INTO Table_A (nid, vid, type, title, uid) 
VALUES ('', '', multichoice', (SELECT questiontext from Table_B), '1') 

但它抛出一个错误。

什么应该是正确的说法?

UPD:我应该补充说,nid是autoincrement,vid的值应该与nid相同。

回答

46

你试过

INSERT INTO Table_A (nid, vid, type, title, uid) 
SELECT '', 
     '', 
     'multichoice', 
     questiontext , 
     '1' 
from Table_B 

看一看INSERT ... SELECT Syntax

+0

nid是自动增量。我怎么能在这个声明中将新创建的nid添加到vid中? – nrk 2010-03-04 07:51:32

+0

@nrk'NULL'? [字符填充] – Matt 2012-11-26 01:38:05

8

你应该使用下面的SQL查询:

INSERT INTO Target(A, B, C) 
    SELECT A, B, C 
    FROM Source 
+0

这在MySQL上适用于我。 – aalaap 2016-06-24 10:34:53

+0

谢谢,编辑了这篇文章。 – 2016-07-01 09:41:05

0

使用此方法

INSERT INTO目标(列名称)(从示例3选择列);

列在这里应该是相同的类型。

-1

我认为这个问题的正确答案可能被选中,从我看到的其他答案是,你们在从表B获取值之前插入,因为你应该首先得到的值是:SELECT from然后将表B插入表A中。你应该在选择的行上搜索到

+0

以下是MySQL网站的一段引文:SELECT ... INTO形式的SELECT可以将查询结果写入文件或存储在变量中。这是它的[链接](http://dev.mysql.com/doc/refman/5.0/en/select-into.html)。当你想将记录复制到另一个表中时,它没有任何帮助。 – Mehran 2012-10-29 15:04:00

0
insert into table2(columnname)select columnname from table1 
相关问题