golang第一个功能实现(判断字段相等就合并指定字段到一个表格中)

来源:互联网 发布:淘宝开店要注册公司吗 编辑:程序博客网 时间:2024/05/16 05:04

要求:本地数据库test有两个表list和user
list表:
Id user_id name
1 1 test11
3 2 test22

user表:
Id user money add_time
1 test1 111
2 test_2 222

如果list表的user_id字段跟user表的id字段相等,就将list表的字段添加到user表的字段后面。

package mainimport (    "fmt"    "github.com/astaxie/beego/orm"    "github.com/astaxie/beego"    _ "github.com/go-sql-driver/mysql"    //"strconv")func init(){    maxIdle := 100                //最大空闲数    maxConn := 500                //最大连接数    test := beego.AppConfig.String("dbconfig::test")    orm.RegisterDataBase("default", "mysql", test, maxIdle, maxConn)}type List struct {    Id      int     //`json:"id"`    UserId  int     //`json:"user_id"`    Name    string  //`json:"name"`}func FindList()(ldata []List, err error) {    sql := "SELECT * FROM list"    o := orm.NewOrm()    o.Using("test")    _, err = o.Raw(sql).QueryRows(&ldata)    return}type User struct {    Id      int     //`json:"id"`    User    string  //`json:"user"`    Money   int     //`json:"money"`    AddTime string  //`json:"addtime"`}func FindUser()(udata []User, err error) {    sql := "SELECT * FROM user"    o := orm.NewOrm()    o.Using("test")    _, err = o.Raw(sql).QueryRows(&udata)    return udata,err}type ResData struct {       //定义一个结构体来接收结果的值,因为要需要合并的也是结构体,最后的结果有几个字段,这个结构体就有几个字段。    Id      int    User    string    Money   int    Name    string    ListId  int    UserId  int}func main (){    data , err := FindList()    if err != nil {        fmt.Println("err : ", err)    }    udata ,err := FindUser()    if err != nil{        fmt.Println("err :",err)    }    fmt.Println(data)    fmt.Println(udata)    var Resdata []ResData    for _, val := range udata{        for _, v := range data{            if val.Id == v.UserId{                Resdata = append(Resdata, ResData{val.Id,val.User, val.Money, v.Name,v.Id,v.UserId})            }        }    }    fmt.Println("Resdata : ",Resdata)    return}

输出结果:
[{1 1 test11} {3 2 test22}]
[{1 test1 111 } {2 test_2 222 }]
Resdata : [{1 test1 111 test11 1 1} {2 test_2 222 test22 3 2}]

阅读全文
0 0
原创粉丝点击