gorm order 排序
时间: 2023-02-08 21:45:42 浏览: 201
GORM 是一个 Go 语言的 ORM 库,它提供了简单易用的 API 来访问数据库。在 GORM 中可以使用 `Order` 方法来对查询结果进行排序。语法示例如下:
```
db.Order("column1 desc, column2").Find(&results)
```
其中 `column1 desc, column2` 是排序条件,可以按照多个字段进行排序,使用逗号隔开。如果要降序排列,可以在字段名称后面加上 `desc` 关键字,如果要升序排列,可以在字段名称后面加上 `asc` 关键字。
示例
```
db.Order("age desc").Find(&users)
db.Order("name desc, age desc").Find(&users)
```
以上是gorm中的Order的用法。
相关问题
GORM order 升序
在 GORM 中,你可以使用 `Order` 方法来指定查询的升序排序。下面是一个示例:
```go
db.Order("column_name ASC").Find(&results)
```
在上面的示例中,你需要将 "column_name" 替换为你想要按其升序排序的列名,然后将 `results` 替换为你想要存储结果的变量名。
注意,`ASC` 是默认的排序方式,所以你可以省略它,例如:
```go
db.Order("column_name").Find(&results)
```
这将产生相同的结果。
排序没有生效 db := common.DB.Session(&gorm.Session{}) //升序降序 feild := ctx.DefaultQuery("feild", "id") order := ctx.Query("order") if order == "desc" { feild = feild + " DESC" } else { feild = feild + " ASC" } var res *gorm.DB if s == 5 { common.DB.Model(&req).Debug().Where("name LIKE ?", "%"+name+"%").Where("responsible_unit LIKE ?", "%"+unit+"%").Count(&count) res = db.Order(feild).Scopes(Paginate(page, pageSize)).Where("name LIKE ?", "%"+name+"%").Where("responsible_unit LIKE ?", "%"+unit+"%").Find(&lists) } else { common.DB.Model(&req).Where("status=?", s).Where("name LIKE ?", "%"+name+"%").Where("responsible_unit LIKE ?", "%"+unit+"%").Count(&count) res = db.Order(feild).Scopes(Paginate(page, pageSize)).Where("status=?", s).Where("name LIKE ?", "%"+name+"%").Where("responsible_unit LIKE ?", "%"+unit+"%").Find(&lists) }
根据您提供的代码片段,我看到您尝试对数据库查询结果进行排序。在这段代码中,您通过 `db.Order(feild)` 来设置排序字段。
如果排序没有生效,可能有几个原因需要检查:
1. 确保 `feild` 变量的值正确。您可以打印或调试查看 `feild` 的值是否正确。
2. 确保您的数据库表中存在与 `feild` 对应的列名。如果列名不存在或拼写错误,排序将无效。
3. 确保数据库连接和查询语句没有其他错误。您可以通过打印或调试来验证数据库查询是否正确执行。
如果这些步骤都没有解决问题,建议提供更多上下文或错误信息以便更好地帮助您解决问题。
阅读全文