select用户在mysql中有多个不同的记录

zou*_*yjs 17 mysql sql select

对于包含用户网页访问行为记录的表,如何选择访问多个网页的用户.

这个表的结构是:

userId        webpageId       visitTime
  0              123            ...
  0              124            ...
  1              123            ...
 ...             ...            ...
Run Code Online (Sandbox Code Playgroud)

我可以算一下:

SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;
Run Code Online (Sandbox Code Playgroud)

它给我的结果如下:

userId          count
  0               2
  1               1
  2               6
 ...             ...
Run Code Online (Sandbox Code Playgroud)

如何执行查询,给出最终结果,如:

userId
  0
  2
 ...
Run Code Online (Sandbox Code Playgroud)

每个用户都访问多个DISTINCT网页

Joh*_*Woo 34

只需添加having子句

SELECT userId, COUNT(DISTINCT webpageId) AS count 
FROM visits 
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)

但如果你只是那个 ID

SELECT userId
FROM visits 
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)

你为什么要过滤HAVING子句而不是on WHERE的原因是因为,WHERE子句不能支持聚合的列.


Isw*_*San 5

试试这个:

SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId
having COUNT(DISTINCT webpageId) > 1
Run Code Online (Sandbox Code Playgroud)

更多:HAVING