Однажды сталкивался с таким, решил, что лучше держать информацию о соединении в отдельной таблице(у которого три целочисленных поля/колумна — первый является собственым ИД, другие два — внешние ключи на таблицу пользователей, первая ИД показывает на пользователя, который связан, второй ИД — на пользователя с кем связан первый). Например, если пользователь с ИД 12 связан с пользователем 15, а последний в свою очередь с 21-м, то наш поиск/селект по-любому будет производится на таблице соединениях.
Не считаю этот вариант хорошим, но если понравиться — советую до использования и вообще прочитать:
Michael Peacock, PHP 5 Social Networking