MySQL 查找其他人查看过的产品

标签 mysql

我有一个表,其中包含客户查看的产品,如下所示:

| 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/

相关文章:

mysql - 更改表中一行的主键(id)并将其他行向下移动

mysql - 缓冲区溢出 SQL 注入(inject)是如何发生的?

mysql - 在MySQL中为100K行的表建立单列索引需要多长时间?

mysql - 三张表的 SQL 二次计数

mysql - MySQL 存储过程的 INOUT 示例

mysql - 快速获取1000+记录

mysql - 使用som批量更改mysql中的数据

MySQL 查询以了解计划合规性

php - fastcgi 中的持久数据库连接

MySQL 错误 : The maximum column size is 767 bytes