我想从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 :(得分: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;