如查询”按照created_at
升序第一个创建的User“
db.Model(&models.User{}).Order("created_at ASC").Limit(1).Find(&s)
sql:
SELECT * FROM "users" ORDER BY created_at ASC LIMIT 1
db.Model(&models.User{}).Order("created_at ASC").First(&s)
这样写会自动加上主键的排序,生成的sql,虽然说结果应该都没什么差别,但是和预期的sql并不一样:
SELECT * FROM "users" ORDER BY created_at ASC, "users"."id" ASC LIMIT 1
这样写,直接和想要的sql意图相反,变成”最后一个创建的User“,且自动加上了主键的排序
db.Model(&models.User{}).Order("created_at DESC").Last(&s)
sql:
SELECT * FROM "users" ORDER BY created_at DESC, "users"."id" DESC LIMIT 1