Как проверить существование записи по Foreign key?

Приветствую!

Такой вопрос - есть две таблицы(users, items). Между собой они связаны через Foreign key(users.id => items.user).

И есть запрос:
SELECT * FROM `users` WHERE `ballance` <= 10 AND `activated` = 1


Хотелось бы сюда прикрутить проверку на существование записи в таблице items, т.е. чтобы выводились только те пользователи, у которых есть записи в таблице items.

Реально ли и как сделать? И дополнительный вопрос - сильную ли нагрузку создаст подобный запрос на базах с >1kk записей, к примеру. Спасибо.
  • Вопрос задан
  • 2974 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
and exists (select 0 from ...)

В зависимости от объёма и explain'а, может оказаться эффективнее:
SELECT * FROM `users` join (
select distinct user_id from items
) hasitem on users.id=user_id WHERE `ballance` <= 10 AND `activated` = 1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
HaJIuBauKa
@HaJIuBauKa
select distinct u.* from users u
join items i on i.user_id = u.user_id

тут лучше конечно фильтровать и LIMIT делать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы