2014-07-17 82 views
1

我試圖與選擇插入多行,這樣的事情:MySql的多發與插入選擇

INSERT INTO Check(
name, price, 
count, order_id) 
SELECT 
p.name, p.price, 
:count, :order 
FROM Product p 
WHERE p.id 
IN(:id1, :id2, :id3) 

的問題是,所有的:id1, :id2, ...有自己:coun1, :count2, :count3。我不知道如何解決這個問題?

+0

:id是產品'id',:count是該產品的「計數」。我想製作一個籃子。但數據太大了。所以我想優化它,並插入一個查詢... – Urmat

回答

1

您正在尋找這樣的事情?:

INSERT INTO Check(
name, price, 
count, order_id) 
SELECT 
p.name, p.price, 
IF (id = :id1, :count1, IF (id = :id2, :count2, :count3)), :order 
FROM Product p 
WHERE p.id 
IN(:id1, :id2, :id3) 
+0

謝謝,但我認爲這將是太多「如果」。據推測大約100「如果」 – Urmat

+0

有沒有另一種方式來做到這一點? – Urmat

+1

@Urmat那麼,如何將100個計數記錄插入到新的'CountTbl'中並與'Product'連接? –

1

另一種選擇是..創建一個單獨的表與這些變量ID和計數像

create table tab1(id int, count int); 

insert into tab1(id,count) values(:id1, :coun1); 

那麼你可以嘗試像

INSERT INTO `Check`(
name, price, 
count, order_id) 
SELECT 
p.name, p.price, t.id, t.count 
FROM Product p 
JOIN tab1 t on p.id = t.id