Mysql查询、插入学习记录

本文讲解如何在MySQL中使用INSERT INTO与UPDATE语句,结合concat_ws()函数进行字段连接,并介绍自定义变量@的应用,如字段累加。通过实例演示如何将查询结果作为数据源更新或插入新表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql查询、插入学习记录

  1. 将查询出来的语句作为新表的插入数据

    /* 语法:insert into tabel_A(field_a,field_b,field_c,...,field_n) 
    select field_A,field_B,...,field_N from table_B */
    
    /*示例:*/
    INSERT INTO reset_page(`id`, `flh_ajh`, `jh`, `file_name`, `pdf_num`, `m_id`, `c2`, `c6`, `c11`) select  p.*,m.id m_id, m.c2,m.c6, m.c11 from  pdf_num p LEFT JOIN  model1 m on  concat_ws("-",p.flh_ajh,p.jh,null) = concat_ws("-",m.c2,m.c6,null ) 
    

    以上示例还使用了mysql字段连接的函数concat_ws(replace_char,field_a,field_b,…),该语法是表示使用第一个连接符连接后面的字段,至少要有两个以以上的字段。与concat(field_a,field_b,…)不同之处就在于:concat_ws()每个字段之间会使用相同的连接符,而concat则只是连接两个字段,没有连接符。

    关于concat_ws()与concat()语法可以参考:

    https://www.cnblogs.com/crystaltu/p/6699004.html

    https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pc

  2. 将查询出来的结果作为更新另一个表的数据,update与select连用

    /*update table_A a inner join (select field_a,field_b,... from table_B) b on b.field_a = a.filed_a set a.filed_b = b.filed_b*/
    
    UPDATE model1 m inner JOIN (select pdf_num, m_id from reset_page) p on p.m_id = m.id  SET m.c11 = p.pdf_num 
    
  3. 前一列的两个字段累加值作为后一列字段的值

    /*这里用到了@mysql的自定义变量*/
    select b.c2,b.c6,b.c10,b.c11, concat(if(b.yh >= 10, "0","00"),yh) yh from (select c2,c6,c10,c11, (@yh := @yh + c11 )as yh from model1, (select @yh :=1) as c where c2= '4584' 
    group by concat_ws("-", c2, c6)) b
    

    mysql的@自定义变量使用:赋值使用 := ,最主要的是要在查询时把初始值设置进去,使用(select @a :=初始值)as 别名,并要放在查询的表名后面,如上所示:from model1, (select @yh :=1) as c

    可以参考该文

    https://www.jianshu.com/p/357a02fb2d64

    https://blog.youkuaiyun.com/qq_28325291/article/details/81205861

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值