[精讚] [會員登入]
20890

[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] 建立叢集式資料庫3/4 -- DB1設置及DB PROXY 使用galera建立Mysql的叢集式資料庫 ,繼續修正第1DB及運作PROXY

[Mysql/MariaDB] 修改資料庫、表格或欄位名稱 Mysql/MariaDB修改資料庫、表格或欄位名稱

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

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

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

[phpmyadmin] 登錄超時 (1440 秒未操作),請重新登錄 phpmyadmin登錄超時 (1440 秒未操作),請重新登錄的問題,該如何解決?

隨機好文

沒有非誰做不可的事,也沒有不可被取代的人 沒有非誰做不可的事,也沒有不可被取代的人

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

為什麼要重造輪子? 什麼輪子?造什麼輪子?我為什麼要重造輪子?

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

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭