Работал ли с INNER JOIN

«Работал ли с INNER JOIN» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. В Golang INNER JOIN используется при работе с реляционными базами данных через ORM (например, GORM) или raw SQL. Пример с GORM:

type User struct {
    ID   uint
    Name string
}

type Order struct {
    ID     uint
    UserID uint
    Amount float64
    User   User `gorm:"foreignKey:UserID"`
}

// INNER JOIN через GORM
var orders []Order
db.Joins("User").Find(&orders) // Эквивалент INNER JOIN users ON orders.user_id = users.id

Для raw SQL:

rows, err := db.Query(`
    SELECT o.id, o.amount, u.name 
    FROM orders o
    INNER JOIN users u ON o.user_id = u.id
`)

INNER JOIN возвращает только те записи, где есть соответствие в обеих таблицах.