为了账号安全,请及时绑定邮箱和手机立即绑定

选择特定列时如何获取对应的字段?

选择特定列时如何获取对应的字段?

Go
牛魔王的故事 2023-06-26 17:13:38
这是代码:// User Modeltype User struct {    UserID        int           `db:"user_id"`    UserNme       string        `db:"user_nme"`    UserEmail     string        `db:"user_email"`    UserAddressID sql.NullInt64 `db:"user_address_id"`}func (ur *userRepository) FindAll() ([]models.User, error) {    var users []models.User    query := "select user_nme from users"    err := ur.Db.Select(&users, query)    if err != nil {        return nil, err    }    return users, nil}结果:&[]models.User{models.User{UserID:0, UserNme:"Jay Durgan", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Arne Balistreri", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Greg Willms", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Lady Aisha McLaughlin", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}, models.User{UserID:0, UserNme:"Mrs. Phoebe Boyle", UserEmail:"", UserAddressID:sql.NullInt64{Int64:0, Valid:false}}}% 正如您所看到的,我没有查询user_id,user_email和user_address_idcolumns ,但结果给我这些字段的值为零。那么,有没有办法只获取与查询列对应的字段呢?另外,我不想这样写:&user.userNme, &user.xxx,&user.xxx这意味着编写每个字段并填充它。太冗长了。预期结果是:{UserNme: "Jay Durgan"}...
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

通过使用结构,你不能。


其他字段仍然存在,但值为零。这些字段是结构的属性,因此无论您是否需要它,无论它是否存储从数据库操作检索的值,所有字段仍然存在。


对于您的情况,唯一的解决方案是使用地图,因此只会检索对应字段的值。


var users []map[string]interface{}

query := "select user_nme from users"

err := ur.Db.Select(&users, query)

if err != nil {

    return nil, err

}

结果:


&[]map[string]interface{}{map[string]interface{}{UserNme:"Jay Durgan"}, ...}


查看完整回答
反对 回复 2023-06-26
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

你可以试试这个


func (ur *userRepository) FindAll() ([]models.User, error) {

    users := []models.User{}.UserNme

    query := "select user_nme from users"

    err := ur.Db.Select(&users, query)

    if err != nil {

        return nil, err

    }

    return users, nil

}

您也可以点击此链接


http://go-database-sql.org/retrieving.html


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信