MYSQL子查询WHERE IN有count /有

时间:2017-07-15 14:54:10

标签: mysql

我搜索并发现类似的帖子,我想要完成但不是一个确切的解决方案。我有一个分组文章的表格(有共同信息的文章)。我需要从所述表中选择至少有10篇属于该组的文章。

Group ID | Article ID | Posting Date
------------------------------------
| 1      | 1234       | 2017-07-14
| 1      | 5678       | 2017-07-14
| 1      | 9000       | 2017-07-14
| 2      | 8001       | 2017-07-14
| 2      | 8002       | 2017-07-14
------------------------------------

SELECT `groupid`, `article_id`, `publish_date`
FROM `article_group`
WHERE `groupid` IN ( SELECT `groupid`, count(`groupid`) as cnt
               FROM `article_group`
               WHERE date(`publish_date`) = '2017-07-14'
               group by `groupid`
               having cnt > 10
               order by cnt desc
               )

我理解子查询应该只返回一列,但是如何通过计数来实现这一点?

1 个答案:

答案 0 :(得分:1)

你非常接近。您应该只在子查询中选择一列,而ORDER BY不是必需的:

SELECT `groupid`, `article_id`, `publish_date`
FROM `article_group`
WHERE `groupid` IN (SELECT `groupid`
                    FROM `article_group`
                    WHERE date(`publish_date`) = '2017-07-14'
                    GROUP BY `groupid`
                    HAVING COUNT(*) > 10
                   )