登录
首页 >  Golang >  Go问答

如何获取“选择1”数据

来源:stackoverflow

时间:2024-05-01 21:54:36 250浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《如何获取“选择1”数据》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我试图确定数据库中是否存在某个值,因此我选择使用 select 1 from table,但是如何获取数据? 我想检查两个人是否是好友,这是我的模型

type buddy struct {
    id      uint64 `gorm:"primarykey"`
    userid  uint32
    buddyid uint32
}

这是我尝试过的gorm sql

// select 1 from buddies where user_id=? and buddy_id=?
type Result struct {
    Exist uint32
}
exist := &Result{}
orm.DB.Debug().Table("buddies").Raw("SELECT 1 as exist FROM buddies WHERE user_id = ? and buddy_id = ?", userID, buddyID).Scan(exist)

但是我没有在exist.exist中得到任何东西


解决方案


这里有一个函数可以按照您的要求并以最佳方式执行

package main
    
    import (
        "gorm.io/driver/sqlite"
        "gorm.io/gorm"
        "log"
    )
    
    type buddy struct {
        id      uint64 `gorm:"primarykey"`
        userid  uint32
        buddyid uint32
    }
    func main() {
        db, err := gorm.open(sqlite.open("test.db"), &gorm.config{})
        if err != nil {
            panic("failed to connect database")
        }
    
        // migrate the schema
        db.automigrate(&buddy{})
    
        // create
        db.create(&buddy{userid: 1, buddyid: 2})
        db.create(&buddy{userid: 2, buddyid: 1})
        db.create(&buddy{userid: 3, buddyid: 1})
    
        var exists bool
        db.raw("select case count(1) when 0 then false else true end from buddies where user_id = ? and buddy_id = ?", 1, 2).scan(&exists)
        log.print(exists)
        db.raw("select case count(1) when 0 then false else true end from buddies where user_id = ? and buddy_id = ?", 3, 2).scan(&exists)
        log.print(exists)
    }

您可以检查它是否有效

queryResult := db.Where(fmt.Sprintf("user_id = %d and buddy_id = %d", 1, 2).Find(&Buddy)
    if queryResult.Error == nil {
       //you can also check queryResult.RowsAffected > 0
        result = queryResult.Statement.Model //get the returned data
    } else {
        //do something with queryResult.Error
    }

理论要掌握,实操不能落!以上关于《如何获取“选择1”数据》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>