[精讚] [會員登入]
20585

[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] 把SELECT的結果UPDATE到表中 Mysql update select 出來的結果,一次完成

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小 Mysql中資料型態int, float, text, char, varchar, blob大小

Mysql 安裝完畢要做的事 Mysql 安裝完畢後,該處理的流程

[MySQL] FIND_IN_SET函數,把多筆條件判斷弄成字串 SQL 我們如果要查找某個欄位是否為某個值的時候,如果要判斷的條件很多,可以用這個函數

[Mysql/MariaDB] 清除及設定 MySQL 的死連接 mysql 伺服器若有太多的連接,無疑的會耗用非常多的資源,若資源耗盡會影響新的連線,勢必要做一些調整

[Mysql] 修改欄位的自動索引值autoindex (auto_increment ) Mysql 新增、刪除、修改、查看欄位的自動索引值autoindex (auto_increment)

隨機好文

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

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

[札記] 2016.7~12月札記 札記,只是札記

[MYSQL] 設定字串欄位的預設值 新增表格的時候,字串欄位給予預設空值;數字欄位給預設數值;日期欄位給空值。

如何讓瀏覽器每次都重新載入css、js、圖檔 不管怎麼刷新網頁,他總是跑出來舊的內容,這對開發的人來說很困擾...