Group 分组查询
Group 方法用于指定分组条件,通常用于对查询结果进行分组统计。
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)
func main() {
// 创建数据库连接
db := gdb.New()
// 分组查询
result, err := db.Model(&model.User{}).
Fields("age, COUNT(*) as count").
Group("age").
OrderBy("age").
All()
if err != nil {
fmt.Println("查询失败:", err)
return
}
// 处理查询结果
fmt.Println(result)
}
在上述代码中,我们使用 Group 方法指定了按照年龄字段进行分组查询,并使用 COUNT(*) 统计每个分组的记录数量。
Order 排序查询
Order 方法用于指定排序条件,可以根据一个或多个字段进行升序或降序排序。
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)
func main() {
// 创建数据库连接
db := gdb.New()
// 排序查询
result, err := db.Model(&model.User{}).
Fields("id, name, age").
OrderBy("age DESC").
Limit(10).
All()
if err != nil {
fmt.Println("查询失败:", err)
return
}
// 处理查询结果
fmt.Println(result)
}
在上述代码中,我们使用 OrderBy 方法指定了按照年龄字段降序排列查询结果。
Having 分组后条件过滤
Having 方法用于在分组后对分组结果进行条件过滤,类似于 Where 方法,但 Having 用于分组后的聚合条件过滤。
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)
func main() {
// 创建数据库连接
db := gdb.New()
// 分组查询后条件过滤
result, err := db.Model(&model.User{}).
Fields("age, COUNT(*) as count").
Group("age").
Having("age > ?", 18).
OrderBy("age").
All()
if err != nil {
fmt.Println("查询失败:", err)
return
}
// 处理查询结果
fmt.Println(result)
}
在上述代码中,我们使用 Having 方法在分组查询后进行条件过滤,只保留年龄大于18的分组统计结果。
这些方法可以根据实际需求在查询中进行分组、排序和条件过滤操作,使得查询结果更加灵活和符合业务需求。
转载请注明出处:http://www.zyzy.cn/article/detail/7640/GoFrame