Isso é definitivamente possível com o MySQL, mas acho que você pode estar fazendo isso de uma maneira estranha. Eu começaria estruturando as tabelas da seguinte forma:
TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )
Quando um usuário adiciona um interesse, se não tiver sido adicionado antes, você o adiciona aos
Interests
tabela e adicione-a ao UserInterests
tabela. Quando você quiser verificar se há outras pessoas próximas com interesses semelhantes, você pode simplesmente consultar o UserInterests
tabela para outras pessoas que tenham interesses semelhantes, que já tem todas essas informações para você:SELECT DISTINCT userId
FROM UserInterests
WHERE interestId IN (
SELECT interestId
FROM UserInterests
WHERE userId = $JoesID
)
Isso provavelmente pode ser feito de uma maneira mais elegante, sem subconsultas, mas foi o que pensei agora.