2 回答
TA贡献1735条经验 获得超5个赞
首先,根据我的评论:您仅用作mysql数据库,但您正在导入所有方言包(它们确实调用了它们各自的 init 函数。这些函数注册了特定于方言的回调(例如 init func在MsSQL 包中)。从导入中删除所有不使用的方言:
// 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
我还会检查您可能遇到的任何错误,它们可能会在日志顶部为您提供更多调试信息:
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)
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报