> Напиши SQL запрос для выбора всех чатов пользователя с именем Вася (Go)
Уровень: middle · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
Предположим, что у нас есть таблицы users (id, name) и chats (id, name), а также связующая таблица user_chats (user_id, chat_id). Запрос будет выглядеть так:
SQLSELECT c.id, c.nameFROM chats cJOIN user_chats uc ON c.id = uc.chat_idJOIN users u ON uc.user_id = u.idWHERE u.name = 'Вася';
Если же чаты хранятся в одной таблице с полем user_id (например, каждый чат принадлежит одному пользователю), то запрос упрощается:
SQLSELECT id, nameFROM chatsWHERE user_id = (SELECT id FROM users WHERE name = 'Вася');
В Go для выполнения такого запроса можно использовать database/sql:
GOvar chats []Chatrows, err := db.Query(`SELECT c.id, c.nameFROM chats cJOIN user_chats uc ON c.id = uc.chat_idJOIN users u ON uc.user_id = u.idWHERE u.name = $1`, "Вася")if err != nil {// обработка ошибки}defer rows.Close()for rows.Next() {var chat Chatif err := rows.Scan(&chat.ID, &chat.Name); err != nil {// обработка ошибки}chats = append(chats, chat)}
> Похожие задачи по Go
Какие плюсы и минусы шардирования по сообщениям и по пользователям
Как шардировать таблицы пользователей, чатов и сообщений
Почему использовать UUID вместо int для идентификаторов
Как работает двусвязный список в LRU кэше
> Похожие задачи по backend
Какие плюсы и минусы шардирования по сообщениям и по пользователям
Как шардировать таблицы пользователей, чатов и сообщений
Почему использовать UUID вместо int для идентификаторов
Как работает двусвязный список в LRU кэше
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью