我在 UPDATE 中使用子查询:
UPDATE tableA
SET x,y,z = ( (SELECT x, y, z
FROM tableB b
WHERE tableA.id = b.id
AND (tableA.x != b.x
OR tableA.y != b.y
OR tableA.z != b.z))) );
我的问题是,如果子查询不返回任何行会发生什么?它会使用空值进行更新吗?
其次,有没有更好的方法来写这个。我基本上是从 tableB 更新 tableA 中的三个字段,但是只有在三个字段中的任何一个不同时才应该进行更新。