对于一个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 ...
请记住,您现在还需要在命名查询中使用此列名称。
今天带大家了解了的相关知识,希望对你有所帮助;