我想从名称匹配的scenario_id = 7更新scenario_id = 1的行。 scheme_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

最佳答案

为了使其在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

关于mysql - 使用同一张表更新表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17474023/

10-09 21:07