是符合连接标准sql的更新

时间:2015-08-28 09:35:00

标签: sql sql-server ansi-sql sql-standards

以下标准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

1 个答案:

答案 0 :(得分: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子句会导致问题。就个人而言,我不想在有关更新发生顺序的争论中进入会议室。