Update Sql語句的寫法

2021-09-12 01:47:27 字數 803 閱讀 3250

有一次,我想更新一條記錄的幾個字段,將sql寫成了下面的樣子。

update table1 set column1 = 'value1' and column2 = 'value2' and column3 = 'value3' where id   = 3;
我的本意,是想將表 table1 中 id = 3的這行,將column1, column2, column3改為新的值。

然而,執行的結果,卻只將column1的值改為了0。不但column2和column3的值沒有改,而且column1的值改的也不對。

後來,自己查了一下update語句的寫法,發現正確的寫法如下。

update table1 set column1 = 'value1' , column2 = 'value2' , column3 = 'value3' where id   = 3;
也就是,設定多個列的值時,中間用逗號隔開,而不是and。

事後,我分析了一下,第一次的sql為什麼是那樣的效果呢。

原來,第一次sql,實際執行的是下面的邏輯。

update table1 set column1 = ('value1' and column2 = 'value2' and column3 = 'value3') where id   = 3;
找到id=3的行,判斷這一行的column2是否等於value2,column3是否等於value3,兩個的結果再和value1一起相與,並將結果賦值給column1.

語法雖然沒錯,但執行邏輯完全變了。

返回UPDATE SQL語句所影響的行數的方法

用如下方法可以直接得到影響的行數 dim conn dim sql dim lngrecs sql update table1 set field1 good set conn server.createobject adodb.connection conn.open dsn conn.execu...

Oracle語句塊的寫法

乙個完整的語句塊由三部分組成。第一部分 declare 宣告部分,定義變數,資料型別,異常,區域性子程式等 第二部分 begin 執行部分,實現塊的功能 第三部分 exception 異常處理部分,處理程式執行過程中產生的異常 結束 end 1 宣告部分 宣告部分以declare開始,以begin結...

關於if else語句的寫法

假如現在我們的情況判斷確定只有兩種 當然未來可能會有新的情況 比如 正確和錯誤兩種狀態。我們定義正確的status值為1,錯誤的status值為2。不推薦的 寫法 public static void main string args else 應該這麼寫 public static void ma...