我在 Sqlx 中使用 Go 1.17,但我不明白如何正確加入我的表。
這是我的結構(我的加入不是邏輯,我只是??用 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?
uj5u.com熱心網友回復:
您可以為您的 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 ...
請記住,您現在還需要在命名查詢中使用此列名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358280.html
