新到MySQL(從Oracle推出),我有這個UPDATE:MySQL的UPDATE和CASE
UPDATE the_table
SET the_col = 'the_value',
the_col2 = CASE WHEN the_col = 'the_value' THEN 'x' ELSE 'y' END
WHERE a = 1;
的想法是,如果the_col設置爲 'the_value' the_col2設置爲 'X',否則設置它到'y'。
我所看到的是the_col正在更新,但the_col2。
我沒有收到錯誤報告,所以我假設語法/用法是確定的。
就好像「SET the_col ='the_value'」設置值,以便在CASE中引用它時具有新值。我認爲這不太可能,但這似乎是發生了什麼。
我想要做的是測試更新前的列值。
如果反轉SET的順序會怎樣? – Tom
*如果the_col設置爲'the_value',則將the_col2設置爲'x'*但查詢中所有記錄的情況如此 –
@OP:語法正確。價值將被預先設定,並應該工作。你正在使用哪個版本? –