更新同一張表的整列字段
阿新 • • 發佈:2017-12-11
pro 存在 sql format sele log pos 本質 mysq
首先需要先把需要更新的整列結果查詢出來。
這裏記錄下mysql時間的函數:DATE_FORMAT( 字段名, ‘%Y-%m-%d %H:%i:%s‘ ) 第二個參數是要轉換的格式,因為我本來的格式中有毫秒。
以下是舉例:
轉換的sql :SELECT id AS dd, DATE_FORMAT( created, ‘%Y-%m-%d %H:%i:%s‘ ) created2 FROM pe_project_list
整條sql:
UPDATE pe_project_list
INNER JOIN ( SELECT * FROM ( SELECT id AS dd, DATE_FORMAT( created, ‘%Y-%m-%d %H:%i:%s‘ ) created2 FROM pe_project_list ) a ) b ON b.dd = pe_project_list.id
SET pe_project_list.created = b.created2;
這裏說下為什麽外面還要套一層select,因為不能先select出同一表中的某些值,再update這個表(在同一語句中),所以把select出的結果再通過中間表select一遍,這樣就規避了錯誤。這個問題目前似乎只存在於mysql。
把兩張表(本質上是一張)連起來,再添加set中的約束條件,使兩列中的每一條數據都一一對應,這樣即可完成更新。
更新同一張表的整列字段