2 回答

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個贊
首先,根據(jù)我的評論:您僅用作mysql數(shù)據(jù)庫,但您正在導(dǎo)入所有方言包(它們確實(shí)調(diào)用了它們各自的 init 函數(shù)。這些函數(shù)注冊了特定于方言的回調(diào)(例如 init func在MsSQL 包中)。從導(dǎo)入中刪除所有不使用的方言:
// remove lines that I've commented out here...
import (
"github.com/jinzhu/gorm"
// _ "github.com/jinzhu/gorm/dialects/mssql"
_ "github.com/jinzhu/gorm/dialects/mysql"
// _ "github.com/jinzhu/gorm/dialects/postgres"
// _ "github.com/jinzhu/gorm/dialects/sqlite"
)
您可以將條款NOT IN的一部分移至基于文檔的條件。WHEREJOIN
我還會檢查您可能遇到的任何錯誤,它們可能會在日志頂部為您提供更多調(diào)試信息:
err := db.Table("A").Select("A.id,A.age").
Joins("LEFT JOIN B on A.id = B.id AND B.id NOT IN (?)", []int{2, 3, 4, 5}).
Where("age = ?", 28).
Scan(&result).Error
if err != nil {
fmt.Fatalf("Failed to execute query: %+v", err)
}
fmt.Prinln(result)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個贊
解決
使用
Where("B.id not in(?)", [] {2,3,4,5}) instead of Not()
有人有更好的主意嗎?
- 2 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報