id username
| 1 | john
| 2 | mike
| 3 | Tim
| 4 | Jake
| 5 | Sam
follower_id followed_id
| 1 | 3
| 1 | 4
Джон следует за Тимом и Джейком. Как мне вернуть список пользователей, за которыми подписан Джон нет?






Попробуйте выполнить подзапрос, например:
SELECT id, username
FROM users
WHERE id NOT IN ( SELECT followed_id FROM follows WHERE follower_id = 1 )
Предположим, что имена таблиц как user и user_to_follower.
user и выполните LEFT JOIN с другой таблицей. Поскольку вы хотите учитывать всех пользователей, которые не подписаны на «Джон», вам необходимо сначала рассмотреть таблицу user.f.follower_id = 1 в предложении ON.is null.Попробуйте следующий запрос:
SELECT u.id, u.username
FROM user AS u
LEFT JOIN user_to_follower AS f ON f.followed_id = u.id
AND f.follower_id = 1
WHERE f.follower_id IS NULL
Ты мужчина! Спасибо.
@onosendi рад помочь :)
Если я хочу расширить свой вопрос, добавив таблицу, мне следует отредактировать текущий вопрос или создать новый?
@onosendi, пожалуйста, создайте новый. На это можно ответить там
В основном LEFT JOIN, где объединенная таблица имеет значение NULL:
SELECT
u.*
FROM
users u
LEFT JOIN follows f ON f.followed_id = u.id AND f.follower_id = 1
WHERE
AND f.follower_id IS NULL
Возможный дубликат Исключить записи, если совпадает правая таблица