Показать пользователей, которые не делали ставки
Есть две таблицы :
bets
user_id bet_id bet_placed_date bet_amount
users user_id created_date country_name phone_number
SELECT u.user_id, b.bet_id FROM users AS u
LEFT JOIN bets AS b
ON u.user_id = b.user_id
WHERE u.user_id NOT IN (SELECT user_id FROM bets)
Нужно написать запрос, который оставляет только тех пользователей, которые не поставили ни одной ставки
Ответы (1 шт):
Автор решения: teran
→ Ссылка
SELECT u.user_id
FROM users AS u
LEFT JOIN bets as b ON (u.user_id = b.user_id)
WHERE b.bet_id IS NULL
После левого джойна ставок к юзерам, у вас у непоставиших ставки bet_id всегда будет NULL, по нему и отфильтровать.
Для варианта с user_id not IN (select distint user_id from bets) джойн ставок по сути не имеет смысла, и работать он будет медленнее, чем вышеупомянутый джойн+фильтрация