首页 > 解决方案 > 用于查找 count > 2 的所有单个记录的 SQL 查询

问题描述

所以我找不到任何解决方案。我见过许多 ORDER BY 和 HAVING 解决方案,它们很接近,但不能完全提供我正在寻找的东西。

我有这个:

SELECT *
FROM t1

WHERE t1.placed > '2020-12-01' AND t1.placed < '2020-12-02'

GROUP BY t1.account

HAVING count(t1.account) > 2;

现在这正好反映了我想看到的行,但我不希望它们组合在一起。我希望数据库给我所有单独的行。现在我尝试删除 GROUP BY,但这不起作用。那么如何获得与上述相同的信息,但显示为单独的行而不是分组?

标签: sqldatetimecounthaving-clause

解决方案


也许使用子查询(用于连接)您可以轻松解决它

select a.*
from table a
inner join (
    select itemID, Count(*)
    from table 
    where placed > '2020-12-01' and placed < '2020-12-02'
    group by itemID
    having Count(*) > 2
) b on a.ItemID = b.itemID

推荐阅读