dtd793353 2017-07-20 13:53
浏览 27
已采纳

使用sqlx进行联接会导致“缺少目标名称”

I have this query that works fine on mysql and return the intended result, but sqlx has difficulty to handle it:

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)
}

At runtime, I get no result but this error message in terminal:

missing destination name joke_id

I don't have this issue when querying a single table.

So I'm wondering what is wrong here and how to fix it?

UPDATE: Here are the structs:

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条回答 默认 最新

  • dousendun8411 2017-07-20 14:24
    关注

    When you execute "SELECT * FROM joke INNER JOIN jokevote" you will get columns from both joke and jokevote tables. Try to query "SELECT joke.* FROM joke INNER JOIN jokevote" to get only columns from joke table.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用