Есть таблица со всеми продавцами и отдельная таблица только с заблокированными продавцами. Как бы ты одним запросом получил список незаблокированных продавцов?

Используйте NOT EXISTS: он выбирает продавцов, для которых отсутствует запись в таблице блокировок. Уникальный индекс по blocked.seller_id полезен и для корректности, и для поиска.

Короткий ответ

Что ответить на собеседовании

Используйте NOT EXISTS: он выбирает продавцов, для которых отсутствует запись в таблице блокировок. Уникальный индекс по blocked.seller_id полезен и для корректности, и для поиска.

Подробный разбор

Ответ с пояснениями

Используйте NOT EXISTS: он выбирает продавцов, для которых отсутствует запись в таблице блокировок. Уникальный индекс по blocked.seller_id полезен и для корректности, и для поиска.

Пример схемы sellers(id, name) и blocked_sellers(seller_id):

SELECT s.id, s.name
FROM sellers s
WHERE NOT EXISTS (
    SELECT 1
    FROM blocked_sellers b
    WHERE b.seller_id = s.id
);

Если блокировка имеет срок или статус, добавьте условие её активности внутри подзапроса. Альтернатива — LEFT JOIN с проверкой отсутствующего ключа. NOT IN требует осторожности при NULL в подзапросе; NOT EXISTS прямо выражает нужную проверку.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее