Этот SQL должен работать.Вам просто нужно ввести user_id пользователя A, и он должен сравниваться со всеми другими пользователями и показывать наиболее подходящий.Вы можете изменить его, чтобы он отображал топ-5 или делать все, что вам нужно.
По сути, он выполняет самостоятельное соединение на столе, но при этом обязательно проверяет, когда оно выполняет соединение., это другой user_id, но "лайк" то же самое.Затем он делает группу по каждому из идентификаторов user_id и суммирует одинаковое количество лайков для этого user_id.
SELECT all_other_likes.user_id, count(all_other_likes.like_id) AS num_similar_likes
FROM likes original_user_likes
JOIN likes all_other_likes
ON all_other_likes.user_id != original_user_likes.user_id
AND original_user_likes.like_id = all_other_likes.like_id
WHERE original_user_likes = USER_ID_YOU_WANT_TO_COMPARE
GROUP BY all_other_likes.user_id
ORDER BY count(all_other_likes.like_id) DESC
LIMIT 1;
Не уверен, какую базу данных вы используете.Возможно, вам потребуется выполнить команду SELECT TOP 1, если это MS-SQL, но это допустимый синтаксис PostgreSQL и MySQL.