第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

選擇與 GORM 一起存在

選擇與 GORM 一起存在

Go
Qyouu 2022-08-15 10:06:42
我想檢查數(shù)據(jù)庫表中是否存在行。我首先使用這種方法:type MyStruct struct {    ID    uint32    Key   string    Value string}var result MyStructerr := db.    Where("id = ? AND `key` = ? AND `value` = 0", myID, myKey).    First(&result).    Errorif err != nil {    if err == gorm.ErrRecordNotFound {        logrus.Error("ErrRecordNotFound")    }    logrus.Errorf("Other DB error: %s", err.Error())}但我想通過編寫原始 SQL 來實(shí)現(xiàn)此目的。我嘗試了以下操作:var result booldb.Raw("SELECT EXISTS(SELECT 1 FROM my_table WHERE id = ? AND `key` = ? AND `value` = ?)",    myID, myKey, "0").Scan(&result)但是我得到這個(gè)錯(cuò)誤:unsupported destination, should be slice or struct.我也嘗試使用方法,并得到同樣的錯(cuò)誤。Exec請(qǐng)注意,該變量是一個(gè)實(shí)例。db*gorm.DB
查看完整描述

5 回答

?
絕地?zé)o雙

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


查看完整回答
反對(duì) 回復(fù) 2022-08-15
?
喵喵時(shí)光機(jī)

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


查看完整回答
反對(duì) 回復(fù) 2022-08-15
?
白衣非少年

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)


查看完整回答
反對(duì) 回復(fù) 2022-08-15
?
汪汪一只貓

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


查看完整回答
反對(duì) 回復(fù) 2022-08-15
?
繁花如伊

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)   


查看完整回答
反對(duì) 回復(fù) 2022-08-15
  • 5 回答
  • 0 關(guān)注
  • 198 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)