आपको केवल उन लोगों को बाहर करने की आवश्यकता है जो प्रत्यक्ष मित्र होने के साथ-साथ मित्र-मित्र भी हैं। मैंने टेबल उपनामों को पुनर्व्यवस्थित किया है, इसलिए यह थोड़ा स्पष्ट है (मेरे लिए, वैसे भी) क्या पुनर्प्राप्त किया जा रहा है:
SELECT
u.*
FROM
user u
INNER JOIN friend ff ON u.user_id = ff.friend_id
INNER JOIN friend f ON ff.user_id = f.friend_id
WHERE
f.user_id = {$user_id}
AND ff.friend_id NOT IN
(SELECT friend_id FROM friend WHERE user_id = {$user_id})
यह क्वेरी की जा रही उपयोगकर्ता आईडी को बाहर करने की आवश्यकता को भी हटा देता है।