Golang query multiple databases with a JOIN

huangapple go评论95阅读模式
英文:

Golang query multiple databases with a JOIN

问题

使用下面的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("没有该ID的用户。")

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

    default:
        fmt.Printf("用户名是%s\n", username)
}

请注意,这只是一个示例,具体的数据库查询和连接方式可能因数据库类型和驱动程序而异。你需要根据你使用的数据库和驱动程序进行相应的调整。

英文:

Using the golang example below, how can I query (JOIN) multiple databases.
For example, I want to have the relation 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)
}

答案1

得分: 1

你好,以下是翻译好的内容:

由于你正在使用MySQL,你可以跨数据库选择字段。有关详细信息,请参阅这个相关问题。例如,你应该能够执行以下操作:

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时使用这些值。当然,这并不推荐,因为这是数据库服务器的工作,它很可能比你做得更好。

英文:

As you are using MySQL, you can select fields across databases. See this related question for
details. For example you should be able to do this:

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

You can of course simply fetch all entries from db2.comments using a second database connection and use the values in a query to db1.users. This is, of course, not recommended as it is the job of the database server which it can, most likely, do better than you.

huangapple
  • 本文由 发表于 2013年9月26日 02:41:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/19012720.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定