試圖理清這個UPDATE
正確的語法:MySQL的:一個記錄與SELECT從另一個表更新多個值
UPDATE `foo`
SET (`x`, `y`, `z`) = (SELECT `x`, `y`, `z`
FROM `bar`
WHERE `id` = 'baz');
在實際的查詢,有列,所以我非常不想爲每一列做x = x
。
該列不是一個完美匹配,所以SELECT *
不是一個選項。
試圖理清這個UPDATE
正確的語法:MySQL的:一個記錄與SELECT從另一個表更新多個值
UPDATE `foo`
SET (`x`, `y`, `z`) = (SELECT `x`, `y`, `z`
FROM `bar`
WHERE `id` = 'baz');
在實際的查詢,有列,所以我非常不想爲每一列做x = x
。
該列不是一個完美匹配,所以SELECT *
不是一個選項。
在MySQL中,你可以添加多個表到UPDATE
這樣的:
UPDATE `foo`, `bar`
SET `foo`.`x` = `bar`.`x`,
`foo`.`y` = `bar`.`y`,
`foo`.`z` = `bar`.`z`
WHERE `id` = 'baz';
您試圖更新foo其中foo.id = bar.baz項目?
UPDATE foo JOIN bar
SET foo.x=bar.x, foo.y=bar.y
WHERE foo.id=bar.baz
注意JOIN與表中的列表相同。 – MindStalker 2010-02-18 15:54:22
謝謝你的回覆! 我製成像這樣的測試: UPDATE'test' SET 'test'.'unique_id' ='store_import'.'unique_id', 'test'.'synced_on' ='store_import'.'synced_on' FROM'store_import' where'store_import'.'entry_id' = 137 這會給出錯誤 #1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第4行'FROM store_import'處'store_import'.'entry_id' = 137'附近使用正確的語法。 您能看到問題出在哪裏嗎? – jerrygarciuh 2010-02-18 15:48:02
是的,自從我發佈它以來,我已經改變了解決方案。我混淆了MySQL和MSSQL。目前的版本是一個。 :-) – Matijs 2010-02-18 15:51:44
好啊。謝謝。將需要很長時間才能查詢所有165列! – jerrygarciuh 2010-02-18 15:58:18