当前位置: > > > > 如何获取“选择1”数据
如何获取“选择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”数据》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注米云公众号吧!
