gpt4 book ai didi

mysql - SQL - 查找具有相似兴趣的用户

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:23 26 4
gpt4 key购买 nike

我正在寻求一些帮助来解决我遇到的问题。我已经完成了大部分的跑腿工作,但我似乎无法做对最后一点。

我在这里添加了一个 SQL Fiddle 示例以更好地演示我正在尝试做的事情:http://sqlfiddle.com/#!9/2955fb/38

我有 3 个表,一个是简单的用户表,另一个是电影列表,第三个是用户喜欢哪些电影的列表。

现在我创建了一个查询,它只返回匹配的行——例如,假设我是 user_id 1 (Dan),只返回与我喜欢相同电影的其他用户。这工作正常,它返回人名和与我匹配的电影 - 我的问题是我想要第三列,其中包含我与该用户匹配的电影总数。

在我给出的示例中,我和 Ash 共有 2 部电影,而我和 Sam 共有 3 部电影。我希望能够按 user_id 分组(以删除重复项),然后按电影数量排序我们有共同点 - 如果这有意义?

我希望有人能帮助我,因为我花了好几个小时才走到这一步。如果我没有解释清楚,请告诉我,我会详细说明。

最佳答案

这是 DEMO

group_concat 将为您提供您与其他用户共有的所有电影,并以逗号分隔

count 将为您提供与该用户共同的电影数量。

order bydesc 部分将对结果进行排序,将最大值放在最前面。

SELECT users.username, group_concat(movies.name), count(movies.name)
FROM user_fave_movies t1
INNER JOIN user_fave_movies t2 ON (t2.movie_id = t1.movie_id)
INNER JOIN users ON users.user_id = t2.user_id
INNER JOIN movies ON movies.id = t1.movie_id
WHERE t1.user_id = 1
AND t2.user_id <> 1
group by users.username
order by count(movies.name) desc

关于mysql - SQL - 查找具有相似兴趣的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561972/

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