查询 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
也许这会对你有所帮助。
我正在尝试设置一个具有 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
也许这会对你有所帮助。