Я думаю, что было бы проще всего убедиться, что таблица friends
всегда имеет более низкий идентификатор в столбце user_id
и более высокий в другом.
Таким образом, вам не нужно проверять дважды, что обеспечивает лучшую производительность.
Однако этот подход требует, чтобы вы изменили код добавления друзей, и предполагает, что идентификаторы пользователей никогда не меняются (или вы должны обновить свои идентификаторы в таблице).
В противном случае используйте UNION
запросы, как сказал Джо, или присоединитесь, используя условие OR
(например, JOIN ... ON u.user_id = friends.user_id OR u.user_id = friends.friend_id
) или IN
(JOIN ... ON u.user_id IN (friends.user_id, friends.friend_id)
), что может быть дорогостоящим процессом (используйте EXPLAIN
и тесты выяснить).