【发布时间】:2021-03-27 19:05:54
【问题描述】:
我正在尝试确定数据库中是否存在某个值,因此我选择使用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)
但我没有得到任何存在的东西。存在
【问题讨论】:
-
不需要在原始查询中传递表;还要捕获错误以及在控制台中打印了什么查询?
-
控制台打印“[1.994ms] [rows:-] SELECT 1 as exists FROM buddies WHERE user_id = 1000039 and buddy_id = 1000079”
-
也许你有太多指向
exist变量的指针。使用exist := Result{}和.Scan(&exist)或exist := &Result{}和.Scan(exist)。 -
@ducklu 问题是您传递 &exists 来扫描,因为指向指针的指针存在已经是一个指针,您可以直接调用 .Scan(exist) 并始终检查错误
-
对不起,我复制了错误的代码,我修复它并再次尝试,存在仍然一无所获