我有一個非常簡單的 mysql 表,有 3 列,A、B 和 C。A 和 B 是鍵。我有一個 GO 應用程序,我正在嘗試從數據庫中檢索數據。使用其他查詢就像一種魅力,但使用這個查詢則不然:aParam := "aValue"bParam := "3,4,6,9"stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( ? )")defer stmt.Close()rows, err := stmt.Query(aParam, bParam)for rows.Next() {...}如果我更換第二個?對于價值觀,它完美無缺:stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( 3,4,6,9 )")我也試過這個(它不起作用):stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( " + bParam +" )")任何的想法?
1 回答

素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
問題是單個?沒有擴展到SELECT語句中(如字符串替換),而是作為單個字符串值3,4,5,6
您需要IN像這樣擴展子句的每個值:
params := []interface{} { "aValue", 3, 4, 6, 9 }
stmt, err := o.database.Prepare("SELECT * FROM tableX WHERE `A`= ? AND `B` IN ( ?, ?, ?, ? )")
defer stmt.Close()
rows, err := stmt.Query(params...)
為了讓你的生活更輕松,你可以使用像sqlx這樣的包,它對參數化IN查詢有更好的支持
- 1 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消