文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

go 递归 数据多层级横向展开 插入数据库

2023-10-12 19:31

关注

需求,在两张表(一张主表,一张明细表,一对多的关系)中有层级关系,比如A(主表数据),A1,A2,A3,A4(明细表数据),而A1这些数据下面还有别的数据那它们也会出现在主表中,需要将多层级的数据横向展示,A-A1-A11-A111-A111这样,查最后一个没有明细表数据位置

代码实现:

package mainimport ("bufio""fmt""os""strconv""strings""time"_ "github.com/alexbrainman/odbc")func main() {for {chuliYuanExecl()}}func chuliYuanExecl() {for {fmt.Println("开始")start := time.Now()// 这里原本是从数据库查出来的编号,先用数组代替var xspjs = []int{1, 2, 3, 4, 5, 6, 7}for _, value := range xspjs {// 层级var num = 0// 数据库插入值,用于拼接sqlvaulestrlist := []string{}// 数据库字段名,用于拼接sqlkeystrlist := []string{}bomfenjie(value, num, vaulestrlist, keystrlist)}fmt.Println()fmt.Println()elapsed := time.Since(start)fmt.Println("执行完成耗时:", elapsed)fmt.Print("按回车键结束")input := bufio.NewScanner(os.Stdin)input.Scan()if strings.Compare(strings.TrimSpace(input.Text()), "") == 0 {os.Exit(0)}return}}func bomfenjie(item int, num int, vaulestrlist []string, keystrlist []string) {itemcode := item// 字段名不一样所以单独处理if num == 0 {vaulestrlist = append(vaulestrlist, "'"+strconv.Itoa(itemcode)+"'")keystrlist = append(keystrlist, "zjcode")} else {// 这里的字段设置根据数据库的,当时为了这样处理方便设计的数据库vaulestrlist = append(vaulestrlist, "'"+strconv.Itoa(itemcode)+"'")keystrlist = append(keystrlist, "code"+strconv.Itoa(num))}// 这里其实应该用上面的itemcode进行连表查询看看明细表有没有数据// 这里的判断其实应该是判断明细表数据是否是0条if item > 80 {// 如果是0条了说明是最后一条数据,进行拼接sql语句fmt.Println(`INSERT INTO BOM_ALLVALUES_X_QHG (` + strings.Join(keystrlist, ",") + `) VALUES (` + strings.Join(vaulestrlist, ",") + `)`)// 这里要重置,不然的话同级的数据会被拼接在一起vaulestrlist = vaulestrlist[0:0]vaulestrlist = append(vaulestrlist, "'"+strconv.Itoa(item)+"'")keystrlist = append(keystrlist, "zjcode")} else {// 有明细的数据,层级加1num = num + 1// 原本这里是for循环,将查出来的数据再进行递归,这里用加数字代替了item = item + 10// 递归go bomfenjie(item, num, vaulestrlist, keystrlist)}}

结果:
在这里插入图片描述

来源地址:https://blog.csdn.net/u013055678/article/details/133793365

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯