user2554883
user2554883

Reputation:

Golang query multiple databases with a JOIN

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)
}

Upvotes: 3

Views: 5356

Answers (1)

nemo
nemo

Reputation: 57639

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.

Upvotes: 2

Related Questions