2011-08-22 48 views
1

這是一個2部分的問題,這是非常相關,因此爲什麼我合併成一個:將多個值插入到相同的列名中+覆蓋/更新現有條目?

第1部分

我有陣列$country$redirect各具有至多3個不同的值(總和六個之間)。

但是,我的表中只有兩列,countryredirect。我想要使​​用插入查詢將$country[0], $country[1], etc插入列country$redirect[0], $redirect[1], etc與列redirect相同。

這可能是一個愚蠢的問題,但是這個INSERT查詢是否可以工作,只是將值循環到列?

INSERT INTO table_name (country, redirect) values ('$country[0]', '$redirect[0]', '$country[1]', '$redirect[1]', '$country[2]', '$redirect[2]') 

如果不是,我怎麼能得到這個工作?我可以使用for循環,但我擔心資源使用情況。


第2部分

如何改寫/更新行,其中country列的值已經存在。

例如,Great Britain已存在於列countryhttp://en-gb在同一行中但在列redirect內。

我有一個INSERT查詢,如INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk'),我想重寫/更新,其中Great Britain已經country柱中存在與新redirect值的行。

任何答案/評論將非常非常非常感謝:)!

+0

是否希望在新行上使用多個值?而對於第二部分,你想要的是將'country'設置爲唯一索引,並將INSERT ... ON DUPLICATE KEY UPDATE。這種類型的操作有時被稱爲UPSERT(儘管這不是有效的MySQL關鍵字)。 – DaveRandom

回答

4

第一個問題,像這樣做,它會工作:

INSERT INTO table_name (country, redirect) 
VALUES ('$country[0]', '$redirect[0]'), 
     ('$country[1]', '$redirect[1]'), 
     ('$country[2]', '$redirect[2]') 

你的第二個問題:你需要country一個unique index,然後可以使用INSERT ON DUPLICATE KEY UPDATE

INSERT INTO table_name (country, redirect) VALUES ('Great Britain', 'http://uk') 
    ON DUPLICATE KEY UPDATE redirect='http://uk'; 

或者具有多個值:

INSERT INTO table_name (country, redirect) 
VALUES ('$country[0]', '$redirect[0]'), 
     ('$country[1]', '$redirect[1]'), 
     ('$country[2]', '$redirect[2]') 
ON DUPLICATE KEY UPDATE redirect=VALUES(redirect) 
+0

編輯:沒有看到您的更新。非常感謝你的幫助!!一旦定時器下降,我會盡快接受你的回答。 – Avicinnian

+0

您可以使用函數'VALUES(...)'引用您想要插入的值。我爲此添加了一個示例。 – Jacob

相關問題