Ако приятелските ви отношения са симетрични, можете да съхранявате всяка двойка в отделен запис:
friend1 friend2
A B
B A
A C
B D
C B
D B
и заявете всички B приятелите на 's харесват това:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
или съхранявайте потребителя с най-малък id в първото поле и това с най-голям id във втория:
friend1 friend2
A B
A C
B D
и заявете B приятелите на 's харесват това:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Първата опция е малко по-ефективна в MySQL , и това е единствената опция, ако приятелските ви отношения не са симетрични (като в LiveJournal )
Вижте тази статия: