[精讚] [會員登入]
20279

[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] 檢查、修復及優化資料庫 mysql/mariadb 檢查、修復及優化資料庫

[Mysql] Mysqldump 的預設編碼 --default-character-set 有時Mysqldump 也得要指定編碼才不會造成匯出的亂碼

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

[Mysql/Mariadb] 密碼設定強度修改 新的mysql對於密碼預設也把原來的規則改得更嚴格,此篇教你修改密碼的設定政策

[Docker] Mariadb-Galera出現Incorrect definition of table mysql.column_stats:'hist_type'及 'histogram' 使用docker的Mariadb-galera出現'hist_type'及 'histogram'型別錯誤的解決方法。

[Mysql] 建立叢集式資料庫2/4 -- DB2、DB3設定 使用galera建立Mysql的叢集式資料庫 ,繼續建立第2,第3台DBs

隨機好文

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

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

[Freebsd] 使用 ADSL 撥接上網 Freebsd上要使用 ADSL 撥接上網,該如何設定?

維修冰箱 維修冰箱

魔球中小女孩唱的歌 The show 魔球中小女孩唱的歌 The show