亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Not() 屬于錯誤的表

Not() 屬于錯誤的表

Go
森欄 2023-04-04 17:05:28
我正在使用 go 版本 go1.10.3 linux/amd64 和 mysql 5.7。需要使用 GORM 的 docker compose config 運行,或者請提供您的配置。package mainimport (    "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")var db *gorm.DBfunc init() {    var err error     db, err = gorm.Open("mysql", "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True")    if err != nil {        panic(err)    }    db.LogMode(true)}type Res {    Id int  `gorm:"column:id"`    age int  `gorm:"column:age"`}func main() {        var result []Res    db.Table("A").Select("A.id,A.age").Joins("left join B on A.id=B.id").        Where("A.age=28").       Not("B.id", []{2,3,4,5}).       Scan(&result)       fmt.Printf("%v", result)}sql日志是:select A.id,A.age from A left join B on A.id=B.id where a.age=28 and ABid not in(2,3,4,5)可以看出,對表A( A.B.id not in ...)追加了not操作。如何將其附加到表 B ( B.id not in ...)?
查看完整描述

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)


查看完整回答
反對 回復 2023-04-04
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

解決

使用

Where("B.id not in(?)", [] {2,3,4,5}) instead of Not()

有人有更好的主意嗎?



查看完整回答
反對 回復 2023-04-04
  • 2 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號