5 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以嘗試以下方法
var exists bool err = db.Model(model). Select("count(*) > 0"). Where("id = ?", id). Find(&exists). Error

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果你想避免ErrRecordNotFound錯(cuò)誤,你可以使用Find like db。限制(1)。Find(&user),F(xiàn)ind 方法同時(shí)接受結(jié)構(gòu)和切片數(shù)據(jù)
r := db.
Where("id = ? AND `key` = ? AND `value` = 0", myID, myKey).
Limit(1).
Find(&result)
r.Error
// handle error
exists := r.RowsAffected > 0

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
你應(yīng)該是一個(gè)結(jié)構(gòu)或切片,而不是一個(gè)布爾。更多信息請(qǐng)點(diǎn)擊這里: https://gorm.io/docs/sql_builder.html#Raw-SQLresult
這應(yīng)該有效:
var result struct {
Found bool
}
db.Raw("SELECT EXISTS(SELECT 1 FROM my_table WHERE id = ? AND `key` = ? AND `value` = ?) AS found",
myID, myKey, "0").Scan(&result)

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以檢查是否存在的另一種方法是使用:Count
count := int64(0)
err := db.Model(&MyStruct{}).
Where("id = ? AND key = ? AND value = 0", myID, myKey).
Count(&count).
Error
// handle error
exists := count > 0

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
也許是一個(gè)遲到的回復(fù),但我想分享我發(fā)現(xiàn)的答案,有可能直接掃描到一個(gè)布爾。變量的名稱應(yīng)更改為大寫字母以實(shí)現(xiàn)此目的。
前任:
var Found bool
db.Raw("SELECT EXISTS(SELECT 1 FROM magic_table WHERE magic_field1 = ? AND magic_field2 = ? AND magic_field3 = ?) AS found",
valOfMagicField1, valOfMagicField2, valOfMagicField3).Scan(&Found)
- 5 回答
- 0 關(guān)注
- 198 瀏覽
添加回答
舉報(bào)