1

是否符合以下标准 SQL?如果不是,那为什么不呢?

UPDATE a
SET    a.Y = 2
FROM   TABLE_A a 
       INNER JOIN TABLE_B b ON
          a.X = b.X
WHERE  b.Z = blahblah
4

1 回答 1

2

编写查询的符合 ANSI 的方法是:

UPDATE TABLE_A
    SET Y = 2
    WHERE b.Z = blahblah AND
          EXISTS (SELECT 1 FROM TABLE_B b WHERE TABLE_A.X = b.X);

据我所知,ANSI 和 ISO 都没有提供他们为什么不做某事的理由。我可以推测FROM当给定行上有多个匹配项时,该子句会导致问题。就个人而言,在争论更新发生的顺序时,我不想在房间里。

于 2015-08-28T11:01:55.597 回答