使用sqlx加入导致缺少目的地名称'

时间:2017-07-20 13:53:19

标签: go sqlx

我有这个查询在mysql上工作正常并返回预期的结果,但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

查询单个表时我没有遇到此问题。

所以我想知道这里有什么问题以及如何解决它?

更新:以下是结构:

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"`
}

1 个答案:

答案 0 :(得分:2)

当您执行“SELECT * FROM joke INNER JOIN jokevote”时,您将从笑话和笑话表中获取列。 尝试查询“SELECT joke。* FROM joke INNER JOIN jokevote”以仅获取笑话表中的列。