2012-11-06 37 views
15

嘿所以我有一个连接两个无关表的连接表。这两个表都有ID。我需要使用具有不同值的WHERE从每个表中选择ID,例如这是我如何看待它。从多个表中插入表

INSERT INTO c (aID, bID) 
VALUES (SELECT a.ID WHERE a.Name="Me", SELECT b.ID WHERE b.Class="Math"); 

我见过的所有例子都使用了连接语句,但是这两个表有一个共同的值,在这种情况下它们没有。

+0

你尝试'SELECT ... INTO'? – Raptor

回答

36

尝试以下:

 INSERT INTO c (aID, bID) 
    SELECT a.ID, B.ID 
    FROM A, B 
    WHERE A.Name='Me' 
    AND B.Class='Math'; 
+0

很酷的生病尝试它,但为什么“从表A”为什么不是“从一个” – ThingWings

+0

@Kosmo:我不知道'A'是你的表格表,所以我使用了一个伪表名称作为TableA并引用TableA '别名'a。如果你的表是'A,B&C',那么就用'INSERT INTO C ... FROM A,B ...'。我更新了答案。 –

+1

你是否想在另一个中找到ID?如果他们不相关,你怎么能把他们联系起来?暂时忘记插入组件,只需获取返回所需数据的SELECT语句即可。上面的答案会给你一个交叉连接的数据。即如果在A中有30个“我”记录,而在B中有50个“数学”记录,则会得到1,500条记录。你期望得到多少条记录,它们应该如何相互关联? –

1

另一种方式可以

INSERT INTO c (aID, bID) 
SELECT 
    (SELECT A.id FROM TableA A WHERE A.names = 'sometext'), 
    B.id FROM TableB B 
WHERE 
    B.x_name ='othertext';