sql更新語句中update set from用法

2021-08-19 04:56:16 字數 922 閱讀 6797

執行一般的sql更新語句為update table_name set column_name=value where column_name1=value1;但是我們有時候需要將某個錶用的字段根據兩個表中相關字段更新為另乙個表中某個欄位的資料,即a表中主鍵aid在b表中有個外來鍵bid相關,b表中字段b需要根據a、b表對應id更新為a表中字段c的資料,如果根據以上的sql一條一條的更新會非常浪費時間,所以我們需要用到update set from的語句用法。

在資料庫中有一張表為student,如下所示:

如果以真實的情況來看的話,在一張學生表裡,那麼有些人的年齡是錄入錯誤的,那麼我們需要修改這些錯誤,在資料量非常大的情況下,這些資料修改起來是很費時間的,所以我們可以用一張excel表核對好所有學生資訊,然後匯入資料庫,成為一張臨時的表,如何用excel匯入資料庫請參見:

以下為我們匯入的臨時表:

其中student_id為生成的guid,那麼我們現在需要根據名字在更新他們的年齡,執行以下sql語句:

update student set age=tm.age from temporary tm where student.name=tm.name

執行成功後,就可以看到我們的student表已經更新成功了:

注:更新、刪除等語句在執行後都不可以撤銷,返回。所以在操作的時候已經要小心謹慎,如果擔心操作失誤,可以先備份資料庫,或新建兩張一樣的表,先執行一次,成功後再到正式的表中執行。

SQL更新語句執行

分析器 解析知道這是一條更新語句 優化器 決定使用id索引 執行器 具體執行 包括執行 1之類的 redolog crash safe能力,write pos和checkpoint的概念。引擎層innodb,在資料庫讀取的時候不會用redolog合併,會用change buffer中的資料 binl...

SQL注入批量更新語句

sql 2000解決方法 declare fieldtype sysname set fieldtype varchar 刪除處理 declare hcforeach cursor global forselect n update quotename o.name n set quotename ...

sql更新語句小技巧

日常sql更新語句中,尤其是多表同時更新,或同時更新同乙個表同一條資料,為保證資料準確性!原庫存減少 update lucky user score set now score now score 1 where activity id 9999 and user id 6666 and now s...