golang UNION ALL使用
时间: 2023-07-11 16:07:34 浏览: 165
在 Golang 中,可以使用 SQL 的 UNION ALL 操作符将多个 SELECT 语句的结果集合并成一个结果集。下面是一个使用 UNION ALL 的示例:
```go
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
rows, err := db.Query(`
SELECT name, age FROM users WHERE gender = 'male'
UNION ALL
SELECT name, age FROM users WHERE gender = 'female'
`)
if err != nil {
panic(err.Error())
}
defer rows.Close()
var name string
var age int
for rows.Next() {
err := rows.Scan(&name, &age)
if err != nil {
panic(err.Error())
}
fmt.Printf("%s (%d)\n", name, age)
}
}
```
在这个示例中,我们首先使用 `sql.Open()` 函数打开 MySQL 数据库连接。然后使用 `db.Query()` 函数执行两个 SELECT 语句,使用 UNION ALL 操作符进行合并。最后,使用 `rows.Scan()` 函数读取每一行的结果,并将结果打印出来。
需要注意的是,使用 UNION ALL 操作符进行合并时,两个 SELECT 语句返回的列数和数据类型必须完全相同。否则会导致运行时错误。
阅读全文