2013-07-04 85 views
0

我想從scenario_id = 7更新scenario_id = 1的行,其中name匹配。 scenario_id之間的差異不是恆定的。使用相同的表更新表

id|scenario_id|status|name 
1 |1   |Passed|testcase_1 
2 |1   |Passed|testcase_2 
3 |1   |Failed|willPassInNextRun 
4 |7   |Passed|testcase_1 
5 |7   |Passed|willPassInNextRun 

後更新表應如下

id|scenario_id|status|name 
1 |1   |Passed|testcase_1 
2 |1   |Passed|testcase_2 
3 |1   |Passed|willPassInNextRun 
4 |7   |Passed|testcase_1 
5 |7   |Passed|willPassInNextRun 
+0

結果是什麼想要嗎?因爲我不確定要理解。 – kmas

+0

你能寫一個返回正確結果的SELECT查詢嗎? – Strawberry

+0

*什麼*應該更新?表後應如何看待? –

回答

0

試試這個,

update table t1, table t2 
set t1.status=t2.status 
where t2.scenario_id=7 and t1.scenario_id=1 
and t1.name=t2.name 
and t1.status!=t2.status; 
1

爲了還工作在SQLite的,使用標準的SQL,並期待與新的價值相關子查詢:

UPDATE MyTable 
SET status = COALESCE((SELECT status 
         FROM MyTable AS T2 
         WHERE scenario_id = 7 
         AND T2.name = MyTable.name), 
         status) 
WHERE scenario_id = 1