我有下面的查询,运行时它说有 325 行受到影响。但是,如果我只运行查询的 SELECT 部分,则会返回 331 个结果。这意味着当整个查询运行时,只有 325 行得到更新,而不是 331。我不确定差异可能是什么。我希望它更新它在查询的 SELECT 部分中找到的所有行
此更新导致更新了 325 行
UPDATE A
SET
A.status = X.c
FROM
tableA A INNER JOIN (
SELECT tableB.c_id, COUNT(*) as c
FROM tableB
LEFT JOIN tableC
ON tableB.c_id = tableC.c_id
WHERE tableC.c_id != tableC.c_id_update
GROUP BY tableB.c_id) X
ON A.c_id = X.c_id
并且仅运行查询的 SELECT 部分会返回 331 行
SELECT tableB.c_id, COUNT(*) as c
FROM tableB
LEFT JOIN tableC
ON tableB.c_id = tableC.c_id
WHERE tableC.c_id != tableC.c_id_update
GROUP BY tableB.c_id
我真的很想弄清楚为什么有 6 (331-325) 条记录没有更新?!谢谢你的帮助。