mysql 从查询结果中查询新增与更新(insert/update select)

  • 数据库
  • 2022-09-09
  • 692 已阅读
  • 作者: huwhois
  • 来源:
简介mysql 从查询结果中查询新增与更新数据, insert 比较简单, 将要 select 语句放在新增数据位置即可; update select 语句必须使用inner join更新数据.

一. INSERT … SELECT

可以根据SELECT 语句的结果快速将多行插入到表中,该语句可以从一个或多个表中进行选择

    

insert into Table2(a, c, d) select a,c,5 from Table1;

查询新增还可以用另一种形式: select into

    

select a,c INTO Table2 from Table1  

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

 

二. UPDATE … SELECT

update select 语句(注意:必须使用inner join)

语法 :

    

UPDATE a
    INNER JOIN ( SELECT yy FROM b ) c ON a.id = c.id 
    SET a.xx = c.yy

样例:

    

-- SQL1(分组统计表1)
    SELECT
    	knowledge_id,
    	COUNT( 0 ) nums 
    FROM
    	pro_base_timu_knowledge 
    GROUP BY
    	knowledge_id;
    	
    -- SQL2(更新SQL1统计内容到表2)
    UPDATE pro_base_knowledge
    INNER JOIN ( SELECT knowledge_id, COUNT( 0 ) nums FROM pro_base_timu_knowledge GROUP BY knowledge_id ) b ON pro_base_knowledge.id = b.knowledge_id 
    SET pro_base_knowledge.timu_num = b.nums

 

很赞哦! ( 0 )