使用下面的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)
}
答案 0 :(得分:1)
在使用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
。当然,这不是推荐的,因为它是数据库服务器的工作,它最有可能比你做得更好。