mysql - 如何进行 "users who like X also like Y"查询?

标签 mysql sql algorithm

<分区>

假设我有一个表,用于产品、用户和用户制作的产品的“喜欢”。像这样:

create table likes (
user_id int unsigned not null,
product_id int unsigned not null,
rating set('like','dislike') not null,
primary key (user_id, product_id)
);

在特定产品的页面上,我想查询“likes”表以查找其他一些被也喜欢该特定产品的用户“喜欢”的产品。这个查询会是什么样子?

最佳答案

您可以使用以下查询来查找同样喜欢 product_id=x 的用户最喜欢的产品:

select L2.product_id, count(L2.user_id) as num_users from likes L1
join likes L2
where L1.product_id=x and L1.rating='like'
and L2.user_id = L1.user_id
group by L2.product_id
order by num_users desc;

关于mysql - 如何进行 "users who like X also like Y"查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19341776/

相关文章:

mysql - 列表中的 SQL 中缺少哪些值?

python - Sqlalchemy order_by 自定义排序?

java - 访问 NxN 二维数组中节点的状态

algorithm - 建立基于技能的团队

java - RequestMapping 与 hibernate OneToMany 如何以正确的方式插入外键

MySQL从列中删除尾随换行符

mysql - 如何将一对多关系与指向同一个表id的多个键链接起来?

java - 时间复杂度说明

php - 复杂的mysql select语句

java - JOOQ 中的WITH 语句?