3

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 Answer 1

2

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.