Jeg har hånet nogle tabeldata for at teste min forespørgsel. WHERE klausuler skal placeres efter JOIN s. Du er også lidt tvetydig med hensyn til sammenligningen af COUNT OG 5 -- hvis du vil have mere end 5, så >5 , hvis du vil have 5 eller flere, så >=5 .
SQL:(SQLFiddle Demo )
SELECT a.user_id,a.username,COUNT(b.user_id)
FROM users a
INNER JOIN articles b ON a.user_id=b.user_id
WHERE a.type=3
GROUP BY a.user_id
HAVING COUNT(b.user_id)>5
ORDER BY RAND()
LIMIT 4