はじめに
GormでMySQLを操作していたところ、DISTINCTを使いたくなった。
GORMのサイトをみてやってみたけど上手くいかなかったので、
色々自分で試す。上手くいく方法が見つかったので、そのメモ。
結論
Select()の取得対象指定の際に、頭に"DISTINCT "を付与する
ソースコード
確認時のソースコード
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
const (
TBL_TEST string = "Test"
)
// 元のテーブル
type Test struct {
Id uint32 `gorm:"column:ID" json:ID`
Name string `gorm:"column:name" json:name`
Age uint32 `gorm:"column:age" json:age`
}
// 取り出したい対象
type result struct {
Age uint32 `gorm:"column:age" json:age`
}
func main() {
var rslt []result = []result{}
var dbCnct *gorm.DB
// DBへの接続処理(省略)
err := dbCnct.Debug().Table(TBL_TEST).Select("DISTINCT " + TBL_TEST + ".age").Scan(&rslt).Error
fmt.Println(rslt)
}