2012-05-02 116 views
1

我想更新它只有两个字段 test_set_id一张桌子和plan_id的数据类型 ,我可以从该查询如何通过与其他5个表连接来更新表中的列?

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

你有你'SET'子句中两列:'SET test_set_id,plan_id'它应该是什么? –

+1

你想在'test_set_relation'中更新哪行/行?你想要更新的行与你的'select'之间有什么关系? –

+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 
+0

我不确定这个语法是否适用于mysql – HLGEM

相关问题