使用相同的表更新表

时间:2013-07-04 15:36:12

标签: mysql sqlite

我想从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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;