[精讚] [會員登入]
20012

[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] 查看資料表狀態 要看資料表的狀態,不是結構喔,以前我都會用 procedure analyse(): SELECT `colname`

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

[Mysql] 將記錄由0變1、1變0;或是判斷後再改值的寫法 MySQL 將記錄由0變1,1變0的SQL寫法 假如欄位 `active` 為0 是失效;1 為有效,他的型態是 tin

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

[MySQL/Mariadb] 正規表達式(regular express) mysql的正規表達式很詭異,很不能接受

[Mysql/Mariadb] 忘記root密碼 常常會忘記root 密碼,簡單的幾步驟回復

隨機好文

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

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

UTF8中文字/全形一覽 快速查詢urf-8的中文字,共計13246中文字(5401常用字+7652罕用字+日文或編號),292全形符號,27半形符號。

[AS3] FLASH 引入外部as檔 FLASH AS3中,若要引用另外撰寫的 class(*.as) 檔案,該如何處理?

網頁的標頭(head)搜尋引擎和FB最佳化 網頁的標頭(head)搜尋引擎和facebook最佳化