我有這個疑問,關於MySQL的正常工作,並返回預期的結果,但是sqlx有困難作出處理:JOIN使用SQLX原因「失蹤目的地名稱」
var jokes []model.Joke
err := shared.Dbmap.Select(&jokes, "SELECT * FROM joke INNER JOIN jokevote ON joke.id=jokevote.joke_id AND jokevote.vote=? AND joke.user_id=?", 1, userId)
if err != nil {
log.Println(err)
}
在運行時,我沒有得到任何結果,但在終端此錯誤消息:
缺少目的地名稱joke_id
查詢一個表的時候,我沒有這個問題。
所以我想知道這裏有什麼問題,以及如何解決它?
UPDATE:這裏有結構:
type Joke struct {
ID int `db:"id" json:"id"`
UserID int `db:"user_id" json:"user_id"`
Title string `db:"title" json:"title"`
Content string `db:"content" json:"content"`
...
}
type JokeVote struct {
ID int `db:"id" json:"id"`
JokeID int `db:"joke_id" json:"joke_id"`
UserID int `db:"user_id" json:"user_id"`
Vote int `db:"vote" json:"vote"`
}
您的'model.Joke'包含一個帶有'db:「joke_id」'註解的字段嗎? – yazgazan
不,它只有主數據庫的「db:」id「'。剛剛添加了結構。 – Karlom
然後,sqlx不知道'model.Joke'的哪個成員要掃描'joke_id'。您可以將'JokeID'字段添加到'model.Joke'(使用適當的'db'註釋),或者在查詢中指定要手動返回的列(而不是'SELECT *')。 – yazgazan