2012-08-10 75 views
0

嗨我試圖在谷歌搜索答案,但我沒有發現即使我不是第一個有這個問題。對不起,如果我錯了...更新與左連接

我想把一些表的價值放在另一個條件和左連接。 這是我的查詢,但它不工作,我真的不明白爲什麼,。

UPDATE `table1` 
SET `table1`.`field1` = `table2`.`value` 
FROM `table1` 
LEFT JOIN `table2` ON `table2`.`idt1`=`table1`.`id` 
WHERE `id`='35520' 

它說: #1064 - 你在你的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第3行的'FROM '附近使用正確的語法。

如果您有任何建議,很高興聽到這些,謝謝!

bastien

回答

3

你試過這樣嗎?

UPDATE `table1` 
SET `table1`.`field1` = (
    SELECT `table2`.`value` 
    FROM `table2` 
    WHERE `table2`.`idt1`=`table1`.`id` 
) 
WHERE `id`='35520' 
+0

它effectvly工作,謝謝 – BastienSander 2012-08-10 07:29:00

1

您的語法錯誤。如果你的SQL風味支持它,嘗試:

UPDATE `table1` 
LEFT JOIN `table2` ON `table2`.`idt1`=`table1`.`id` 
SET `table1`.`field1` = `table2`.`value` 
WHERE `id`='35520' 

否則,你將需要一個子查詢:

UPDATE `table1` 
SET `table1`.`field1` = (SELECT `table2`.`value` 
         FROM `table2` 
         WHERE `table2`.`idt1`=`table1`.`id`) 
WHERE `id`='35520' 
+0

的「味道」是非常明確的,由於那些可怕的反引號。 – 2012-08-10 06:36:08

+0

@a_horse_with_no_name是的,非常真實。我試圖讓答案更通用一點,所以來這裏的每個人都可以學到一些東西。 – 2012-08-10 06:38:06

+0

這兩個工作,謝謝你 – BastienSander 2012-08-10 07:29:16