Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片

发布于 1周前 作者 yuanlaile 来自 Go语言

例如一个 user 表有 id 、name 、sex 、desc 四个字段,我想查最后 10 条记录,将十条记录的 name 、sex 、desc 各返回一个切片给我,请问有什么简便的方式嘛,我看官网有 Pluck 可以用,但是只能返回单个字段的切片


Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片
11 回复

遍历然后自己重新组

更多关于Golang Go语言中 请教一下 gorm 怎么查某个表的多条记录的指定几个字段,每个字段的值返回一个切片的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


可以用这个工具生成 orm , https://github.com/go-home-admin/toolset
直接生成对应函数
type UsersList []*Users

func (l UsersList) GetIdList() []int64 {}
func (l UsersList) GetIdMap() map[int64]*Users {}

type Result strut {

Name string
Sex int
Desc string

}

var result Result

err = db.Table(“user”).Select(“name,sex,desc”).Limit(10).Order(“id DESC”).Find(&result).Error

struct 没补齐,都不会拼字母了哈,😅

每次都重新写太麻烦了, 获取 id 列表,或者 id map 基本是经常用到的,直接生成放着完事。
看我生成的例子
https://github.com/go-home-admin/go-admin/blob/main/app/entity/demo/user.go

希望 go 以后能.map(_.name).toList

不是这样写啦,我测了这是返回一个切片,其中每个元素是一条数据库记录,只有 Select 的才查其他是零值。我的需求是将多个记录的某个字段组成一个切片,目前就是循环每个记录将制定字段装到一个切片里,这样的方法

#7 var result []map[string]interface{}

然后按 1L 说的自己重新切片

在 Go 语言中使用 GORM 查询某个表的多条记录的指定字段,并将每个字段的值分别存储在一个切片中,你可以通过以下方式实现:

  1. 定义结构体:首先,定义一个结构体来映射数据库表。

  2. 使用 Select 方法:使用 GORM 的 Select 方法来选择你需要的字段。

  3. 使用 Find 方法:将查询结果映射到一个切片中,但注意这里不能直接得到每个字段单独的切片,需要后续处理。

  4. 处理结果:遍历查询结果,将指定字段的值分别存储到不同的切片中。

示例代码如下:

type User struct {
    ID   uint
    Name string
    Age  int
}

func main() {
    var users []User
    var ids []uint
    var names []string
    var ages []int

    db.Select("id, name, age").Find(&users)

    for _, user := range users {
        ids = append(ids, user.ID)
        names = append(names, user.Name)
        ages = append(ages, user.Age)
    }

    // ids, names, and ages now contain the respective field values as slices
}

在这个例子中,db 是你的 GORM 数据库连接。Select 方法指定了要查询的字段,Find 方法将结果映射到 users 切片中,然后遍历 users 切片,将每个字段的值分别存储到 idsnamesages 切片中。

这样,你就实现了从表中查询多条记录的指定字段,并将每个字段的值分别存储在一个切片中。

回到顶部