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 <> ?
Другие вопросы по тегам