Как сделать условие по двум таблицам в mysql?

Есть две таблицы users и likes
users:
668X611ZIiI.jpg
likes:
YOWSzWLtH40.jpg

user_id - это уникальный ID пользователя, он выступает в таблице likes в качестве полей like_caller и like_reciver

Есть такой запрос:
SELECT user_id FROM `users` WHERE `user_find` = '0' AND `user_sex` = '1'


Нужно модифицировать этот запрос так, чтобы те user_id которые есть во второй таблице в поле like_caller или like_reciver не попадали в выборку
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
при условии наличия индексов на `likes`.`like_caller` и `likes`.`like_reciver` и совпадении типов полей с `users`.`user_id`

AND NOT EXISTS(SELECT 'x' FROM `likes` WHERE `likes`.`like_caller` = `users`.`user_id`)
AND NOT EXISTS(SELECT 'x' FROM `likes` WHERE `likes`.`like_reciver` = `users`.`user_id`)

или
AND NOT EXISTS(SELECT 'x' FROM `likes` WHERE `likes`.`like_caller` = `users`.`user_id` OR  `likes`.`like_reciver` = `users`.`user_id`)

выбрать запрос с более легким планом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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