21124

[MYSQL] 把SELECT的結果UPDATE到表中

“
Mysql update select 出來的結果,一次完成
„

分享此文連結 //n.sfs.tw/10919

分享連結 [MYSQL] 把SELECT的結果UPDATE到表中@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-01-09 12:17:37 最後編修
2017-03-19 02:11:57 By 張○○
 

自動目錄

有時要把select的結果直接寫到update中,可以使用 inner select 的方法

舉例如下:

下表table1有兩個欄位,其中col2是空的,要從table2取回資料填入,table2的col3和table1的col1是關聯欄位

table1

欄col1 欄col2
A  
B  
C  

table2

欄col3 欄col4
A 10
B 20
C 30
C 40
C 50

 

UPDATE table1
  SET col2= (SELECT col4 FROM table2 WHERE table1.col1=table2.col3 LIMIT 1)

特別注意上面table2的C有三個數值,所以得加上limit 1,這樣會取第一個值,結果是:

table1

欄col1 欄col2
A 10
B 20
C 30

 

上例直接用select 的方式把資料填入,就不必再麻煩用程式去處理。但是有需要注意的是:

1. inner select 的結果必須只有一個,不能有多個(因此得加上limit 1);

  超過一行會出現這樣的錯誤

  #1242 - Subquery returns more than 1 row

2. 取出的資料如果取不到會是null,有時會有無法塞入col2(設not null的情況下)。

3. update 的操作要小心,因為有可能把資料寫壞了,而且沒有復原的功能。

4. #1406 - Data too long for column 'colX' at row yy =>你的欄位太小,字串填不進去。

相關文章

[MYSQL] 把SELECT的結果INSERT到表中@精讚


原文 2015-04-06 19:28:21

END

你可能感興趣的文章

[Mysql/Mariadb] 利用phpMyAdmin 建立關聯式資料表 利用phpMyAdmin 建立關聯式資料表

兩次使用InnoDB的慘痛經驗 Mysql 的Innodb引擎雖然好用,但是我得說說我兩次的慘痛經驗,這讓我考慮以後可能不會再使用innodb了

group by的語法在mysql升級後後就不正常了,怎麼回事? ONLY_FULL_GROUP_BY這個變數是怎樣,讓我原本可以用的語法失效了?

[Mysql/Mariadb] 建立使用者及資料庫 Mysql/Mariadb建立使用者、刪除使用者、給予權限、建立資料庫

[MySQL] console mode 的亂碼處理 使用MySQL的console mode如果出現亂碼 在,要怎麼處理?

[Mysql/Mariadb] GROUP_CONCAT 函數 MySQL 中和 group by 一起用的函式,如果我們要算數值的總和或平均,可以使用 sum() 或 avg() 。但是我們如果要在 group by 中把字串「黏起來」,不是使用 concat(

隨機好文

[MAC] 截取螢幕畫面的方法 截取螢幕畫面的方法,在MAC中叫作螢幕快照,英文是screenshot

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?

好用的3+2碼郵遞區號查詢系統推薦 網路上找到用地址輸入判斷3+2碼郵遞區號的辨識率不高,除了這個網站…

[MAC] 好用的傳檔程式Commander One(可用FTP、SFTP等協定) MAC上好用的傳檔程式,免費而且支援FTP、SFTP、Dropbox、Onedrive、GoogleDrive、WebDAV等協定

精讚::