1

我想更新一个只有两个字段 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
        )

我该如何解决这个问题?

4

1 回答 1

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
于 2012-05-02T17:50:44.727 回答