0

我有一个这样的 SQL 语句:

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

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

语句 ... 在“SELECT”附近:语法错误。

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

这会起作用:

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

1 回答 1

5

你需要加入 2 个表,因为我不知道你的数据库结构,我会假设 Name 是 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 = '..')
于 2013-01-16T16:33:11.413 回答