背景
最近在用gorm查询满足某个条件的所有记录中最新的记录,代码可参考下面的例子,具体查询语句如下所示,目的是查询满足条件host_id=1的所有记录中按时间倒序,然后返回最新的记录。
orm.First(&hostStat, "host_id = ?", 1).Order("time desc").Error
完整的case
package main
import (
"os"
log "github.com/Sirupsen/logrus"
"github.com/jinzhu/gorm"
_ "github.com/mattn/go-sqlite3"
"time"
)
type HostStat struct {
Id int
HostId int
Message string
Time time.Time
}
func main() {
if _,err:=os.Stat("test.db");err==nil{
os.Remove("test.db")
}
orm, err := gorm.Open("sqlite3", "test.db")
if err != nil {
log.Errorf("gorm open err:%s", err)
return
}
orm.AutoMigrate(&HostStat{})
orm.Save(&HostStat{
HostId: 1,
Message: "first",
Time: time.Now(),
})
time.Sleep(1 * time.Second)
orm.Save(&