登录
首页 >  Golang >  Go问答

Sqlx 连接具有相同字段的表

来源:stackoverflow

时间:2024-04-04 22:48:35 352浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《Sqlx 连接具有相同字段的表》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我正在将 go 1.17 与 sqlx 结合使用,但我不明白如何正确加入我的表。

这是我的结构(我的连接不是逻辑,我只是​​用 sqlx 测试连接)

表格相册:

package album

import ".../api/v1/movie"

type album struct {
    id      string  `json:"id"`
    title   string  `json:"title"`
    artist  string  `json:"artist"`
    price   float64 `json:"price"`
    movieid int     `json:"movie_id" db:"movie_id"`
    movie.movie
}

桌面电影:

package movie

type movie struct {
    id         string `json:"id"`
    year       uint16 `json:"year"`
    rentnumber uint32 `json:"rent_number" db:"rent_number"`
    title      string `json:"title"`
    author     string `json:"author"`
    editor     string `json:"editor"`
    index      string `json:"index"`
    bib        string `json:"bib"`
    ref        string `json:"ref"`
    cat1       string `json:"cat_1" db:"cat_1"`
    cat2       string `json:"cat_2" db:"cat_2"`
}

这就是我加入的方式:

albums := []Album{}
r.db.Select(&albums, "SELECT * FROM album a INNER JOIN movie m ON (m.id=a.movie_id)")

问题是这两个表具有相同的 id 字段,因此专辑 id 被电影 id 覆盖,我丢失了它。

如何忽略电影 id 字段(因为我在 movie_id 字段中获取了它,并保留专辑 id 的字段 id


正确答案


您可以为您的 id 字段之一提供 id 标记,例如:

type album struct {
    id      string  `json:"id" id:"album_id"`
    title   string  `json:"title"`
    artist  string  `json:"artist"`
    price   float64 `json:"price"`
    movie.movie
}

然后进行查询,将 id 字段别名为 album_id,如下所示:

SELECT movie.id as id, album.id as album_id, ... FROM album ...

请记住,您现在还需要在命名查询中使用此列名称。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>