該SQL應該工作。你只需要放入用戶A的user_id,它應該與所有其他用戶比較,並顯示最匹配的一個。您可以將其更改爲顯示前5名或執行其他任何您需要的操作。
基本上它在做什麼是它在表上做一個自聯接,但確保當它進行聯接時,它是一個不同的user_id,但「like」是相同的。然後它由每個其他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;
不確定你使用的是哪個數據庫。如果是MS-SQL,您可能需要執行SELECT TOP 1,但這是有效的PostgreSQL和MySQL語法。
「LIKE」表的CREATE TABLE語句會更好地解決您的問題。 –