2012-06-08 43 views
1

我有三個表中的MySQL:MySQL中,三個表:UPDATE多行(每一個不同的值)

TABLE:CollectionAttributeValues 
cID 
akID 
avID 

TABLE: atDefault 
avID 
value 

TABLE: CollectionVersions 
cID 
cvName 

看起來像

CollectionVersions 
cID cvName 
1 Billete 
5 Tony 

atDefault 
avID value 
1 B.B 
3 T.T 

CollectionAttributeValues 
cID akID avID 
1 29 1 
5 29 3 

我需要所有的 (名爲值的列)atDefault「 並將其放入cvName in CollectionVersions WHERE AKID =在29 CollectionAttributeValues

基本上,採取 「Billette」 改變爲 「B.B」。並採取「託尼」,並將其改爲「TT」。

到目前爲止,我想出了這個

SELECT value 
FROM `atDefault` AS d 
LEFT JOIN `CollectionAttributeValues` AS v ON d.avID = v.avID 
WHERE v.akID =29 

但我不知道如何得到的值插入到在CollectionVersions的「cvName」列...

+0

什麼是CID列的類型? – JHS

+0

它不是在CollectionVersions或CollectionAttributeValues中的AUTO_INCREMENT。這是另一個表'Collections'中的主要自動增量 – redconservatory

+0

那麼應該在「CollectionAttributeValues」表的'cID'列中插入什麼以及從您所寫的查詢中獲得的值? – JHS

回答

1

UPDATE所有列的表格CollectionVersions與您從查詢中獲得的數據進行比較。試試下面的查詢 -

UPDATE CollectionVersions cv 
SET cvName = 
(SELECT value 
FROM `atDefault` AS d 
LEFT JOIN `CollectionAttributeValues` AS v ON d.avID = v.avID 
WHERE v.akID =29 
AND cv.cID = v.cID) 
+0

這是說「#1242 - 子查詢返回多於一行」 – redconservatory

+0

您的查詢返回的行數超過1行。你想如何將它存儲在'CollectionVersions'表中?如果行數大於1,是否希望查詢逗號返回的值分開存儲。 – JHS

+0

沒有逗號分隔。我在問題中加了一點,希望能澄清一點? – redconservatory

相關問題