Om din vänskapsrelation är symmetrisk kan du antingen lagra varje par i en separat post:
friend1 friend2
A B
B A
A C
B D
C B
D B
och fråga alla B s vänner gillar det:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
eller lagra användaren med minsta id i det första fältet och det med det största id i den andra:
friend1 friend2
A B
A C
B D
och fråga B s vänner gillar det:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Det första alternativet är lite mer effektivt i MySQL , och detta är det enda alternativet om din vänskapsrelation inte är symmetrisk (som på LiveJournal )
Se den här artikeln: