2012-08-10 88 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