2012-05-02 43 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

相關問題