Union 合并查询结果(去重)
Union 方法用于合并两个查询的结果,并去重相同的记录。
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)
func main() {
// 创建数据库连接
db := gdb.New()
// 第一个查询
query1 := db.Model(&model.User{}).
Fields("id, name, age").
Where("age > ?", 18).
OrderBy("age DESC").
Limit(5)
// 第二个查询
query2 := db.Model(&model.User{}).
Fields("id, name, age").
Where("name LIKE ?", "%John%").
OrderBy("id").
Limit(5)
// 合并两个查询结果(去重)
result, err := query1.Union(query2).All()
if err != nil {
fmt.Println("查询失败:", err)
return
}
// 处理查询结果
fmt.Println(result)
}
在上述代码中,我们使用 Union 方法将两个查询结果合并,并通过 Limit 方法限制返回的记录数量。Union 方法会去重相同的记录。
UnionAll 合并查询结果(不去重)
UnionAll 方法用于合并两个查询的结果,并保留所有记录,包括相同的记录。
package main
import (
"fmt"
"github.com/gogf/gf/database/gdb"
"your_project/model"
)
func main() {
// 创建数据库连接
db := gdb.New()
// 第一个查询
query1 := db.Model(&model.User{}).
Fields("id, name, age").
Where("age > ?", 18).
OrderBy("age DESC").
Limit(5)
// 第二个查询
query2 := db.Model(&model.User{}).
Fields("id, name, age").
Where("name LIKE ?", "%John%").
OrderBy("id").
Limit(5)
// 合并两个查询结果(不去重)
result, err := query1.UnionAll(query2).All()
if err != nil {
fmt.Println("查询失败:", err)
return
}
// 处理查询结果
fmt.Println(result)
}
在上述代码中,我们使用 UnionAll 方法将两个查询结果合并,并通过 Limit 方法限制返回的记录数量。UnionAll 方法会保留所有记录,包括相同的记录。
这些方法可以根据实际需求在查询中进行多个结果集的合并操作,使得数据处理更为灵活。
转载请注明出处:http://www.zyzy.cn/article/detail/7641/GoFrame