MySQL запрос на основе условия из другой таблицы
Я пытаюсь написать запрос MySQL, который выбирает 10 имен пользователей на основе условия, оцененного из другой таблицы.
Результатом будет 10 имен пользователей в качестве предложений для подражания. Итак, мне нужно выбрать 10 имен пользователей, за которыми в данный момент не следует зарегистрированный пользователь.
Ниже возвращаются пользователи, за которыми уже следят, поэтому с ними что-то не так. Есть идеи, как это исправить?
"SELECT username
FROM users
WHERE NOT EXISTS
(
SELECT id
FROM user_followers
WHERE user_followers.user_followed_id = users.username AND user_followers.user_follower_id = ?
)
ORDER BY followers DESC LIMIT 10 "
user_followed_id - имя пользователя, которое оценивается по внешнему запросу.
user_follower_id - имя пользователя, для которого производится проверка (использует подготовленные операторы)
2 ответа
Надеюсь, это поможет:
SELECT username
FROM users
WHERE username NOT EXISTS
(
SELECT user_followers.user_followed_id -- I see in you code below that you use this to store the username
FROM user_followers
WHERE user_followers.user_follower_id = ?
)
AND username <> ? -- if the parameter is not the username,may be changed by the id column name of the user
ORDER BY followers DESC LIMIT 10
Может быть, попробуйте LEFT JOIN
SELECT *
FROM users u
LEFT JOIN user_followers uf
ON u.username = uf.user_followed_id
AND uf.user_follower_id <> ?