2010-01-18 99 views
0

我想用另一个表中的匹配值更新我的结果表。在更新时,是否有可能显示尚未更新(不匹配)的记录?显示无法更新的记录mysql

BEGIN WORK 
UPDATE results, testcases 
SET results.testset = testcases.TestSet 
WHERE results.TestCase = testcases.TestCase 

回答

0

最直接的答案是选择所有那些WHERE条款被满足,但SET结果不是:

SELECT * 
FROM results, testcases 
WHERE results.TestCase = testcases.TestCase 
    AND resutls.testset <> testcases.TestSet 
+0

您应该使用此方法的左加入 – danielrsmith 2010-01-18 18:03:57

+0

更新? – JPro 2010-01-18 18:12:30

0

我假设你想要的原因,这同时更新是为了避免不正确的信息由于并发更新。如果情况并非如此,只需使用显示的查询。

在单个查询中没有办法。因此,您需要使用事务边界和查询提示来锁定锁以执行存在查询来查找不匹配的行。

SELECT * 
FROM Results r 
WHERE NOT EXISTS (
     SELECT * 
     FROM TestCases t 
     WHERE r.TestCase = t.TestCase 
     )