我想更新一个只有两个字段的表 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
)
如何解决此问题?
答案 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