Mysql随机显示4个用户,超过5篇文章

时间:2018-02-17 19:53:03

标签: php mysql

我有用户表和文章表。文章表包含用户提交的文章。我正在进行一个SQL查询,以显示超过5篇文章的随机4位用户。 user_id存储在articles表中。我已经在stackoverflow和谷歌搜索了,即使有一些类似的问题,我找不到任何特定的东西。

如果以前已经回答了这个问题,有人可以告诉我,如果是,请给我一个链接,否则我有以下疑问:

SELECT * 
  FROM users WHERE type = 3 
  INNER JOIN articles ON 
    users.user_id = articles.user_id HAVING COUNT(user_id) > 5

这似乎不起作用。我将非常感谢您帮助改进此查询。

数据库表如下:

USERS:
  user_id
  username
  email
  type

ARTICLES:
 id
 user_id
 title

例如,总用户数为100.具有user_id 49的用户具有10篇文章,而具有user_id 50的另一用户具有20篇文章而其余用户具有少于5篇文章。因此查询应该只返回用户49和50。

希望这是有道理的。

问候

2 个答案:

答案 0 :(得分:0)

你有加入并处于错误位置的地方,你错过了小组的正确运作 你需要一个rand和限制4的订单

SELECT u.user_id
FROM users u
INNER JOIN articles a ON  u.user_id = a.user_id 
WHERE a.type = 3 
group by u.user_id 
HAVING COUNT(a.user_id)>= 5
order by rand() limit 4

答案 1 :(得分:0)

我已经模拟了一些表数据来测试我的查询。 WHERE条款必须在JOIN之后定位。您对COUNT5的比较也有点模棱两可 - 如果您想要超过5,那么>5,如果您想要5个或更多,那么>=5。< / p>

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