mySQL:使用另一个表中的SELECT更新记录中的多个值

时间:2010-02-18 15:35:32

标签: sql mysql

尝试找出此UPDATE的正确语法:

UPDATE `foo` 
   SET (`x`, `y`, `z`) = (SELECT `x`, `y`, `z` 
                            FROM `bar` 
                           WHERE `id` = 'baz');

在实际查询中,有 165 列,所以我非常不希望每列都有x = x

列不是完美匹配,因此SELECT *不是一个选项。

2 个答案:

答案 0 :(得分:3)

在MySQL中,您可以将多个表添加到UPDATE,如下所示:

UPDATE `foo`, `bar`
SET `foo`.`x` = `bar`.`x`, 
    `foo`.`y` = `bar`.`y`, 
    `foo`.`z` = `bar`.`z`
WHERE `id` = 'baz';

答案 1 :(得分:1)

您正在尝试更新foo中的项目,其中foo.id = bar.baz?

UPDATE foo JOIN bar
SET foo.x=bar.x, foo.y=bar.y
WHERE foo.id=bar.baz