mysql - Golang 使用 JOIN 查询多个数据库

标签 mysql sql go

使用下面的 golang 示例,如何查询(JOIN)多个数据库。 例如,我想要关系 db1.username.id = db2.comments.username_id

id := 123
var username string

err := db.QueryRow("SELECT username FROM users WHERE id=?", id).Scan(&username)

switch {
    case err == sql.ErrNoRows:
       log.Printf("No user with that ID.")

    case err != nil:
       log.Fatal(err)

    default:
        fmt.Printf("Username is %s\n", username)
}

最佳答案

当您使用 MySQL 时,您可以跨数据库选择字段。请参阅this related question为了 细节。例如,您应该能够执行以下操作:

err := db.QueryRow(`
    SELECT 
        db1.users.username 
    FROM 
        db1.users 
    JOIN 
        db2.comments 
        ON db1.users.id = db2.comments.username_id
`).Scan(&username)

您当然可以使用第二个数据库连接简单地从 db2.comments 获取所有条目,并在对 db1.users 的查询中使用这些值。当然,不建议这样做,因为这是数据库服务器的工作,它很可能比您做得更好。

关于mysql - Golang 使用 JOIN 查询多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012720/

相关文章:

mysql - 选择周一至周五的所有数据或选择工作日的所有数据

mysql - 多查询Mysql

sql - 如何迭代嵌套表类型?

sql - 规范化表上 Postgres 中的行级安全性

go - 无法将数字解码为 Go Value

database - 在 GORM 中按日期过滤

Go包导入问题

mysql - 返回 mysql 中最后一个匹配的行

mysql - 灯 : How to Implement Scheduling?

SQL 聚合具有相同折扣代码的特定产品的所有购买