首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分组提供建议的行动

分组提供建议的行动
EN

Stack Overflow用户
提问于 2012-03-15 19:55:59
回答 3查看 40关注 0票数 0

我试图提供艺术家的建议,基于我们的用户的最爱。

我们的桌子看起来像:

user_id = artist_id

1/4

2/2-4

1/3

4-4-4

6-2

6-3

4/3

2/2-3

因此,如果随机用户正在查看artist_id 3,则代码应查询数据库中是否有收藏artist_id 3的其他用户,并在它们之间找到最常见的艺术家链接。

在这种情况下,artist_id 3是用户最喜欢的1,3,4,6.在这些用户中,应该挑选出常见的artist_id 4(因为它看起来最多)。

那么,我应该如何有效地做到这一点呢?

我要问几个问题吗?首先要抓取所有的user_ids谁有artist_id 3,然后我抓取所有的最爱为这些user_ids和分组相应?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-15 20:20:12

代码语言:javascript
运行
复制
SELECT t2.artist_id
FROM tbl t1
INNER JOIN tbl t2
    ON t1.user_id = t2.user_id
    AND t1.artist_id <> t2.artist_id
WHERE t1.artist_id = 3
GROUP BY t2.artist_id
ORDER BY COUNT(*) DESC;
票数 2
EN

Stack Overflow用户

发布于 2012-03-15 20:03:16

代码语言:javascript
运行
复制
SELECT * 
FROM TABLE A,
(
    SELECT artist_id,user_id
    FROM TABLE
    WHERE artist_id=3
    GROUP BY artist_id,user_id
) B
WHERE A.user_id=3 AND
      A.user_id = B.artist_id;
票数 1
EN

Stack Overflow用户

发布于 2012-03-15 20:06:06

我不是MySQL专家,但类似的东西可能有用。但是mysql的子选择是很棘手的--当应用于大数据量时,它们往往会做一些疯狂的事情。

代码语言:javascript
运行
复制
    SELECT artist_id FROM `table` WHERE
user_id IN (select user_id from `table` where artist_id = 3)
and artist_id != 3
group by artist_id 
order by count(artist_id) desc
limit 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9727199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档