[Mysql ] 变量结合 insert select 语句 字段实现自增序列 待更新.....

  

目录

  

前言:

(select @i:=0)     设置任意变量值

inser select  语法介绍

2. 语法错误注意

变量复制详解:


🚀前言:

          🌿 🌿 🌿 🌿 🌿 🌿每日一剂 🌿 🌿 🌿 🌿 🌿

 🌿 🌿​​​​​​​ 🌿​​​​​​​ 🌿​​​​​​​ 🌿​​​​​​​ 🌿​​​​​​​ 🌿INSERT INTO 'B表 `(B表 对应A 表的 属性字段 ) select A表返回的属性字段(对应B表的) from A 表 where corp_id ='610003202012291' and card_model='03';

 🌿 🌿 🌿 🌿INSERT INTO `card_order_info`(id,bal_bef    select id,now() from card_order_backup where corp_id ='610003202012291' and card_model='03';

 🌿 🌿首先  A,B二个表的属性字段必须对应上,  例如要传入A表查询返回的   固定值到B表, 那么A表就默认设置好 这些值!!!  例如我 这里面的   now()

🚀(select @i:=0)     设置任意变量值

 🌿 🌿变量结合 insert select 语句 字段实现自增序列, 自增的变量要对准你插入的属性列

select  (@i:=@i+1) as i,txn_date,import_time from qr_cd_backup_pack  
insert INTO  xx (id,app_id )select   id,(@i:=@i+1) as order_no     from xxx  表名  where id  IN ('027a85de-04c4-11ec-bfbe-fa163ee79795','0d11b541-04c4-11ec-bfbe-fa163ee79795');   

🚀inser select  语法介绍


       🌿有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:

      🌿 INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name
      上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:

 🌿INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS 表名

主要思路就是把查询的东西  汇总在一个虚拟视图 临时表里面, 然后插入指定的表里面去


🚀语法错误注意

 🌿注意也不要添加重复的值
       🌿 🌿需要注意的是嵌套查询部分最后一定要有设置表别名,如下:

 🌿 🌿 🌿SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS 表名

 🌿 🌿 🌿 🌿即最后的AS 表名 是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报 错误


INSERT INTO A表名  (属性列) SELECT '查询结果集  FROM B表名  WHERE '条件' NOT IN (SELECT Name FROM A表名);     这个语句的意思是  查B表的数据, 必须是A表里面没有存在的数据
 
 


🚀变量复制详解:

mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。

  •  🌿set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量
  •  🌿 🌿select @num:=1; 或 select @num:=字段名 from 表名 where ……
  •  🌿 🌿 🌿注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”
  •  🌿 🌿 🌿 🌿select 字段名1,字段名2 into @变量1,@变量2 from 表名 where ......

在函数或存储过程或触发器中,在不能使用set的时候推荐第三种,因为第二种会在执行时返回查询结果,这在函数或触发器中会报 “Not allowed to return a result set from a function”错误。而第三种则不会报错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值