Wenn Ihre Freundschaftsbeziehung symmetrisch ist, können Sie jedes Paar entweder in einem separaten Datensatz speichern:
friend1 friend2
A B
B A
A C
B D
C B
D B
und alle B
abfragen Das gefällt den Freunden von :
SELECT friend2
FROM friends
WHERE friend1 = 'B'
oder speichern Sie den Benutzer mit der kleinsten id
im ersten Feld und das mit der größten id
im zweiten:
friend1 friend2
A B
A C
B D
und fragen Sie B
ab Das gefällt den Freunden von :
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Die erste Option ist in MySQL
etwas effizienter , und dies ist die einzige Option, wenn Ihre Freundschaftsbeziehung nicht symmetrisch ist (wie bei LiveJournal
)
Siehe diesen Artikel: