2012-11-06 39 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';