MySQL將查詢結果插入或者更新到表中

2021-10-01 20:24:31 字數 2188 閱讀 4161

--類別一、 如果兩張張表(匯出表和目標表)的字段一致,並且希望插入全部資料

insert

into 目標表 select

*from **表;

-- 類別二:匯入指定字段,注意兩表的字段必須一致,否則會出現資料轉換錯誤

insert

into 目標表 (欄位1

, 欄位2,.

..)select欄位1

, 欄位2,.

..from **表 ;

=

1.全量

比如要將 articles 表插入到 newarticles 表中,則是:

insert

into newarticles select

*from articles;

2.指定字段

如果只希望匯入指定字段,可以用這種方法:

insert

into 目標表 (欄位1

, 欄位2,.

..)select 欄位1

, 欄位2,.

..from **表;

【案例】:

表結構

現在有使用者表和使用者實名認證表,user_info,user_card。

user_info中的字段有user_id,user_name 。

user_card中的字段有user_id,user_card,user_name 。

其中user_name為使用者實名認證的資訊,user_info中做了字段冗餘。

問題

使用者表user_info中的user_name和user_card中的user_name不同步。

user_card中有值,user_info中沒有值。

需要將user_card中的user_name同步到user_info中去。

解決方案

(1)通過**查詢出user_info中 user_name 為空的資料 ,然後通過user_id查詢出使用者實名認證的資料進行同步 。

select user_id from user_info where user_name ='';

select

*from user_card where user_id in

(上面的結果集)

;

(2)聯表查詢後更新資料
select

c.user_id ,

c.user_name

from

user_info as u

left

join user_card as c on u.user_id = c.user_id

where

u.user_name =

'';

(3)通過mysql內聯更新資料
先寫出更新語句

update

`user_info`

as u set u.user_name =

'結果集'

;

再獲取條件結果集

select

c.user_id ,

c.user_name

from

user_info as u

left

join user_card as c on u.user_id = c.user_id

where

u.user_name =

'';

最後內聯更新

update

`user_info`

as u

inner

join

(select

c.user_id ,

c.user_name

from

user_info as u

left

join user_card as c on u.user_id = c.user_id

where

u.user_name ='';

)as r on u.user_id = r.user_id set u.user_name = r.user_name ;

MySQL將查詢結果插入到資料表中

mysql教程 insert語句還可以將select語句查詢出來的資料插入到另乙個表中,即可快速地從乙個或多個表中向乙個表中插入多個行。這樣,可以方便不同表之間進行資料交換。基本的語法格式如下 insert into 表名1 字段列表1 select 字段列表2 from 表名2 where 條件表...

MySQL將查詢結果插入到資料表中

基本的語法格式如下 insert into 表名1 字段列表1 select 字段列表2 from 表名2 where 條件表示式 將 表名2 中查詢出來的記錄插入到 表名1 中以後,表名2 中仍然儲存著原來的記錄。例項1 將stu資料表中所有的記錄插入到student資料表中。sql語句如下 my...

MySQL將查詢結果插入到資料表中

insert語句還可以將select語句查詢出來的資料插入到另乙個表中,即可快速地從乙個或多個表中向乙個表中插入多個行。這樣,可以方便不同表之間進行資料交換。基本的語法格式如下 insert into 表名1 字段列表1 select 字段列表2 from 表名2 where 條件表示式 將 表名2...