gpt4 book ai didi

mysql - MySQL 中按相似度对用户进行排序

转载 作者:行者123 更新时间:2023-11-30 00:00:17 25 4
gpt4 key购买 nike

在MYSQL中,我有一个用户表、一个项目表和一个投票表,投票表包含用户对项目的投票。并非每个用户都对所有项目进行了投票,投票可以是 1 或 -1。

给定一个用户,是否可以根据投票的相似性对用户进行排序?

User Table        Item Table       Vote Table

Id | Username Id | Item Id | UserId | ItemId | Vote
------------- ------------ ---------------------------
1 | Tom 1 | Apple 1 | 1 | 1 | -1
2 | Jenny 2 | Orange 2 | 1 | 2 | 1
3 | Jim 3 | Grape 3 | 1 | 4 | 1
4 | Lemon
4 | 2 | 2 | 1 (Jenny voted the same as Tom)
5 | 2 | 4 | -1

6 | 3 | 1 | -1 (Jim voted the same as Tom)
7 | 3 | 2 | -1
8 | 3 | 4 | 1 (Jim voted the same as Tom)

在本例中,给定 userid 1 (Tom),userid 3 (Jim) 与 Tom 更相似,因为他们对 itemid 1 (Apple) 和 itemid 4 (Lemon) 投了两次相同的票。 Userid 2 (Jenny) 不太相似,因为他们只对 itemid 2 (Orange) 投了一次相同的票。

换句话说,Jim 与 Tom 更相似,因为他两次以与 Tom 相同的方式投票来同意 Tom,而 Jenny 不太相似,因为她只在一项项目上与 Tom 投票相同。

最佳答案

我想我找到了解决方案:

SELECT all_users.userId, all_users.itemId, COUNT(user.userId) AS total_matches
FROM votes AS user
JOIN votes AS all_users
ON all_users.vote = user.vote
AND all_users.itemId = user.itemId
AND all_users.userId != user.userId
AND user.userId = 1
GROUP BY all_users.userId
ORDER BY total_matches DESC

关于mysql - MySQL 中按相似度对用户进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com