当前位置: > > > > 如何获取“选择1”数据
来源:stackoverflow
2024-05-01 21:54:36
0浏览
收藏
学习知识要善于思考,思考,再思考!今天小编就给大家带来《如何获取“选择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”数据》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注公众号吧!