查询 select 所有包含出现少于 8 次的值的行

Query to select all rows containing a value that appears less than 8 times

我正在尝试设置一个具有 parent 和 8 个 children 的系统。我通过 user_id 和 tier_id 的 table 来做到这一点。现在我需要获取所有出现少于 8 次的 tier_id 的列表,因此我知道该层不完整,然后我可以转到另一个列表并进行替换。

SELECT * FROM tiers WHERE COUNT(SELECT tier_id) < 8;

我知道这不对,但也许它可以帮助向天才解释我正在尝试做的事情。

首先,您的查询需要一个group by子句,与select子句应该一致:

select tier_id, count(*) cnt
from tiers
group by tier_id

这为您提供了每 tier_id 行,以及相应行的计数。然后,您可以使用 having 子句来过滤计数:

select tier_id, count(*) cnt
from tiers
group by tier_id
having count(*) < 8

您必须使用带有 GROUP BY 子句的 HAVING

 SELECT tier_id, count(*) as TotalCount
 FROM tiers
 GROUP BY tier_id
 HAVING TotalCount < 8

也许这会对你有所帮助。