2013-01-16 103 views
0

我有这样一个SQL语句是:SQL插入不起作用

INSERT INTO TABLE_3(TABLE_1ID, TABLE_2ID) 
SELECT ID FROM TABLE_1 WHERE NAME = '..', 
SELECT ID FROM TABLE_2 WHERE NAME = '..'; 

但它不工作。我只是得到一个错误

Statement ... near“SELECT”:syntax error。

那么如何正确地做到这一点?没有例子说明如何使用两个不同表中的两个选择来处理这个问题。

这会工作:

INSERT INTO TABLE_1(NAME, AGE) 
SELECT NAME, AGE FROM TABLE_2 WHERE ID = '..'; 

回答

5

你需要加入2个表,因为我不知道你的数据库结构,我要去假设名称是2台之间唯一的公共参考,如果事实并非如此,实际上你有更坚实的东西(比如实际的外键),那么你应该使用它。

INSERT INTO TABLE_3 
     (TABLE_1ID, TABLE_2ID) 
SELECT TABLE_1.ID, TABLE_2.ID 
FROM TABLE_1 
    JOIN TABLE_2 ON TABLE_1.NAME = TABLE_2.NAME 
WHERE TABLE_1.NAME = '..' 

从您的评论,好像有TABLE_2和TABLE_3之间没有关系,在这种情况下,你可以这样做:

INSERT INTO TABLE_3 
     (TABLE_1ID, TABLE_2ID) 
SELECT (SELECT ID FROM TABLE_1 WHERE NAME = '..'), 
     (SELECT ID FROM TABLE_2 WHERE NAME = '..') 
+0

应该如何运作的? TABLE_1.NAME和TABLE_2.NAME不一样... – user1882812

+0

Table_1和Table_2之间的关系是什么?只是一个基于名字的ID? –

+0

Table_1和Table_2之间的关系是m:n。为了处理这个问题,我希望得到Table_3,其中包含Talbe_1的ID和Table_2的ID。 – user1882812