如何使用联接查询从MySQL检索数据

时间:2019-08-18 19:05:45

标签: mysql go

我正在用MySQL构建一个简单的Go REST API,在涉及稍微复杂一些的查询时,我在查询数据时遇到了一些麻烦。我有2种模式:书籍和流派。 go中的模型定义如下:

type Book struct {
    ID    string  `json:"id"`
    Title string  `json:"title"`
    Genre *Genre  `json:"genre"`
    Price float64 `json:"price"`
}


type Genre struct {
    ID   string `json:"id"`
    Name string `json:"name"`
}

在SQL中,book表具有id,title,price和id_genre字段,这是一个外键。

困惑在于执行返回行的选择之后,我不确定在遍历行时如何将信息添加到流派字段中

result, err := database.DB.Query("SELECT a.id_book, a.title, a.price, b.name, b.id_genre FROM bookshelf.books a JOIN bookshelf.genres b ON a.id_genre = b.id_genre")

for result.Next() {
    var book models.Book

    // ????
    err := result.Scan(&book.ID, &book.Title, &book.Price, &book.Genre )

    if err != nil {
        panic(err.Error())
    }
    // ...more code
}

很明显,result.Scan方法是错误的,但是我不确定该如何处理类型。

这是正确的方法还是我完全错误的方法?

0 个答案:

没有答案