2
在相同的UPDATE查詢中是否存在指定的更新同一列2+次的行爲,如下所示?在查詢中多次更新同一列
UPDATE tbl SET a = 5, b = 'something', a = 6 WHERE c = 'whatever';
是否有這樣的行爲規範,也可能是SQL的口味有所不同(例如,它是「未定義的行爲」)?用sqlite粗略測試似乎表明它們是從左到右執行的,所以最後一列的值將是結果值,但這並不意味着總是這樣。
編輯:我試圖做到這一點的原因是我正在測試一些類項目的SQL注入。 UPDATE中的一個字段被不安全地注入,我試圖用它來覆蓋來自同一查詢的以前的SET字段。
你爲什麼要這樣做?也許樣本數據和期望的結果會幫助我們理解你的目標。在'mysql'中,它會用你提供的最後一個值更新 - 'sql server'甚至不允許它。你想達到什麼目的? – sgeddes
@sgeddes我更新了帖子。 – iobender
'set'語句的賦值順序通常沒有指定。給定的數據庫可能會指定詞法排序,但不能保證。 –