Skip to content
Advertisement

select users have more than one distinct records in mysql

For a table that holds the records of user’s webpages visiting behavior, how can I select users that visit more than one webpages.

The structure of this tables is:

userId        webpageId       visitTime
  0              123            ...
  0              124            ...
  1              123            ...
 ...             ...            ...

I can count using:

SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;

It gives me the result like:

userId          count
  0               2
  1               1
  2               6
 ...             ...

How can I excute query that gives me the final result like:

userId
  0
  2
 ...

each is user that visit more than one DISTINCT webpages

Advertisement

Answer

just add having clause

SELECT userId, COUNT(DISTINCT webpageId) AS count 
FROM visits 
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1

but if you only what the ID

SELECT userId
FROM visits 
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1

the reason why you are filtering on HAVING clause and not on WHERE is because, WHERE clause cannot support columns that where aggregated.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement