sql >> Databasteknik >  >> RDS >> Mysql

"vänners vänner" SQL-fråga

Du behöver bara utesluta de som är direkta vänner såväl som att vara vänner-till-vänner. Jag har ordnat om tabellaliasen så att det är lite tydligare (för mig i alla fall) vad som hämtas:

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})

Det tar också bort behovet av att utesluta det användar-ID som efterfrågas.



  1. ändra tabell lägg till främmande nyckel misslyckas

  2. Matcha utbud med efterfrågan utmaning

  3. Varför måste jag använda främmande nyckel om jag kan använda WHERE?

  4. postgreSQL mysql oracle skillnader