1
是否符合以下標準SQL?如果不是,那爲什麼不呢?是否符合加入標準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
是否符合以下標準SQL?如果不是,那爲什麼不呢?是否符合加入標準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
的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
子句會導致問題。就我個人而言,我不想在關於更新發生的順序的爭論中進入房間。
不,它不符合標準。 SQL標準中UPDATE語句的定義中沒有FROM。爲什麼?因爲沒有指定。 –
@a_horse_with_no_name提高了評論,因爲它提出了一個微笑 - 雖然回答「爲什麼不......因爲它不是」通常不會幫助。我意識到一個答案可能只是一個黑暗中的刺,因爲明確的原因是爲什麼包含X,但Y不是假設......但我對可能的原因感興趣。 – whytheq
這不是ANSI兼容(至於爲什麼不,你不得不問ANSI委員會)。看到ANSI和非ANSI方法的答案http://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in-sql –