我有一个表,其中包含客户查看的产品,如下所示:
| id | visitor_id | product |
| 1 | 51a474f | 5 |
| 2 | 51a474f | 3 |
| 3 | 51a474f | 3 |
| 4 | 207ed9e | 3 |
| 4 | 207ed9e | 5 |
| 5 | 47d98ee | 4 |
| 6 | 47d98ee | 3 |
| 7 | 47d98ee | 2 |
如果有人来访,例如产品编号5、我想获取所有也访问过同一产品的访问者,然后将所有产品(id不为5)分组并按访问次数进行统计。
我知道我可以通过多个查询来完成此操作,但我认为单个查询会比该解决方案更好。
最佳答案
我假设您的意思是您想要所有产品(id 不为 5)并且由查看过 no 的访问者查看。 5?你可以尝试这样的事情:(只是我的想法,未经测试)
SELECT product, COUNT(id) num
FROM the_table
WHERE
visitor_id IN ( SELECT DISTINCT visitor_id FROM the_table WHERE product='5' AND visitor_id!='this_visitor_id' ) AND
product != '5'
GROUP BY product
ORDER BY num DESC
关于MySQL 查找其他人查看过的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789484/