如何通过将表与其他5个表连接来更新表中的列?

时间:2012-05-02 17:47:58

标签: sql mysqli

我想更新一个只有两个字段的表 test_set_id和plan_id 我可以从这个查询轻松获得

SELECT      tp.plan_id
        ,   r.release_id
FROM        test_plan tp
        ,   releases r
        ,   test_run tr
        ,   iteration i
WHERE       tr.iteration_id = i.iteration_id
AND         i.release_id    = r.release_id
AND         tr.plan_id      = tp.plan_id
AND         i.release_id    = 1
GROUP BY    plan_id

但是当我运行以下查询时,它给了我一个sql错误。

UPDATE  test_set_relation
SET     test_set_id
    ,   plan_id=
        (   SELECT      tp.plan_id
                    ,   r.release_id
            FROM        test_plan tp
                    ,   releases r
                    ,   test_run tr
                    ,   iteration i
            WHERE       tr.iteration_id = i.iteration_id
            AND         i.release_id    = r.release_id
            AND         tr.plan_id      = tp.plan_id
            AND         i.release_id    = 1
            GROUP BY    plan_id
        )

如何解决此问题?

1 个答案:

答案 0 :(得分:4)

您无法在SET中分配多个字段值。

SET test_set_id,plan_id=(SELECT tp.plan_id,r.release_id

这会抛出错误Incorrect syntax near ','. (此错误消息来自SQL Server),因为查询旁边应该有一个赋值运算符 = 列名。

您的查询应该按照这一行制定。在不知道表的结构如何的情况下,无法制定有效的 UPDATE 语句。

用法 SQL Server语法

UPDATE      t1
SET         t1.col2 = t2.col2
        ,   t1.col3 = t2.col3
FROM        table1 t1
INNER JOIN  table2 t2
ON          t1.col1 = t2.col1

用法 MySQL语法

UPDATE      table t1
JOIN
SET         t1.col2 = t2.col2
        ,   t1.col3 = t2.col3
INNER JOIN  table2 t2
ON          t1.col1 = t2.col1
相关问题