1

このクエリから簡単に取得できる test_set_id と plan_id の 2 つのフィールドのみを持つテーブルを更新したい

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 に答える