6

明细表1字符串拼接合并插入到明细表2SQL输出过程记录

 2 years ago
source link: https://blog.51cto.com/mflag/5370683
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

需求描述:

明细表1:formtable_main_46_dt1

字段:id,mainid, bxmx1, jshj, kmbm, fyxm

明细表4:formtable_main_46_dt4

字段:id,mainid,zy,kmbm,jdbmbm,fyxmbm,yfxmbm,jfje

  1. fyxm 为福利费(56)的数据。
  2. bxmx1 拼接,”/”间隔(mysql 结果集行拼接group_concat)。
  3. jshj 取合计(sum)。
  4. 插入到明细表4.
  5. 同主表,所以mainid相同。

输出过程:

  1. 查看明细表1数据。
  2. select mainid, bxmx1, jshj, kmbm, fyxm from formtable_main_46_dt1;
  3. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_字符串拼接
  4. 找一个demo数据,mainid=62,以及过滤符合条件的数据,fyxm=56
  5. select mainid, bxmx1, jshj, kmbm, fyxm from formtable_main_46_dt1 where mainid=62 and fyxm =56
  6. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_数据_02
  7. 尝试字符串合并group_concat
  8. select group_concat(bxmx1) from formtable_main_46_dt1 where mainid=62 and fyxm =56
  9. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_mysql_03
  10. 逗号替换为‘/’
  11. select REPLACE(group_concat(bxmx1),',','/') as zy from formtable_main_46_dt1 where mainid=62 and fyxm =56
  12. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_数据_04
  13. select REPLACE(group_concat(bxmx1),',','/') as zy ,sum(jshj) as jfje from formtable_main_46_dt1 where mainid=62 and fyxm =56
  14. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_字段_05
  15. 添加其它字段
  16. select mainid,REPLACE(group_concat(bxmx1),',','/') as zy ,kmbm,sum(jshj) as jfje from formtable_main_46_dt1 where mainid=62 and fyxm =56
  17. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_字符串拼接_06
  18. 提高兼容性,加group by
  19. select mainid,REPLACE(group_concat(bxmx1),',','/') as zy ,kmbm,sum(jshj) as jfje from formtable_main_46_dt1 where mainid=62 and fyxm =56 group by fyxm
  20. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_字符串拼接_07
  21. 改为insert into 语句前补全字段
  22. select mainid,REPLACE(group_concat(bxmx1),',','/') as zy,kmbm,null as jdbmbm,null as fyxmbm,null as yfxmbm,sum(jshj) as jfje from formtable_main_46_dt1 where mainid=62 and fyxm =56 group by fyxm;
  23. 明细表1字符串拼接合并插入到明细表2SQL输出过程记录_结果集行拼接_08
  24. 改为insert into 语句(测试需谨慎)
  25. INSERT INTO formtable_main_46_dt4 ( mainid,zy,kmbm,jdbmbm,fyxmbm,yfxmbm,jfje) select mainid,REPLACE(group_concat(bxmx1),',','/') as zy,kmbm,null as jdbmbm,null as fyxmbm,null as yfxmbm,sum(jshj) as jfje from formtable_main_46_dt1 where mainid=62 and fyxm =56 group by fyxm;

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK