2012-09-07 123 views
3

我有一個查詢提交表a中的多個項目。多個值在mysql中插入連接

例如:

insert into a values(id,name) (5,'john'),(6,'smith'); 

雖然我還需要與此ID選擇從其他表中的一些第三值。

例如:

insert into a values(id,name,money) (5,'john',(select money from b where id=5)),(6,'smith',(select money from b where id=6)); 

的問題與上述的是,它是一個有些重複,並且也使用子選擇。

我不知道是否有可能改寫這個使用JOIN,(這也應該放心,有關係到表B上給定id,以免它插入一個NULL)。

任何想法?

回答

3

對於每個INSERT,您只允許輸入一個SELECT,因此您需要重新編寫該選項以選擇多行,而不是一次插入多個值。您可以使用JOIN中的兩組值來創建一個臨時表格嗎?INSERT

CREATE TEMPORARY TABLE _tmp_a (id INT PRIMARY KEY, name VARCHAR(255)); 
INSERT INTO _tmp_a (5, 'john'), (6, 'smith') 
INSERT INTO a VALUES (id, name, money) SELECT _tmp_a.id, _tmp_a.name, b.money FROM _tmp_a LEFT JOIN b ON b.id=_tmp_a.id 
+0

那麼爲什麼不呢!這上面看起來不錯,我會嘗試一下。我還想知道是否有可能將'left join'替換爲'join',所以它不會插入等於'null'的錢。我將檢查它:) – Anonymous

+0

如果你想跳過那些沒有在「右側」的相應值的條目,你可以使用'RIGHT JOIN'。 – tadman

+0

Naah,'JOIN'是正確的。謝謝 :) – Anonymous