我有一个结构Person:type Person struct { Id int64 Name string Colors []string}它应该从person表中获取其数据:id | name---------1 | Joe2 | Moe和一张person_color桌子:person_id | color-----------------1 | black1 | blue2 | green通过SELECT p.id, p.name, pc.color FROM person AS p INNER JOIN person_color AS pc ON pc.person_id = p.id我将两个表合并到:id | name | color-----------------1 | Joe | black1 | Joe | blue2 | Moe | green目前我唯一能想到的就是在迭代时手动映射颜色rows.Next()(注意:只是虚拟代码):ps := make([]People, 0)rows, err := db.Query("SELECT ...")for rows.Next() { var p Person err := rows.Scan(&p.Id, &p.Name, &p.Color[0]) exists := false for _, ps := range ps { if ps.Id == p { exists = true ps.Color = append(ps.Color, p.Color) } } if !exists { ps = append(ps, p) }}尽管这可行,但这很烦人,因为映射到切片字段是一种常见操作。有什么方法可以使用sql或sqlx在所有切片字段上使上述通用?
2 回答
- 2 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消