Mysql 根据用户定义的限制选择外键计数

Mysql 根据用户定义的限制选择外键计数,mysql,sql,count,Mysql,Sql,Count,我简化了下面的mysql查询,该查询统计表1中的主键作为外键出现在表2中的次数 SELECT table1.*, COUNT(table2.id) AS 'value' FROM table1 INNER JOIN table2 ON table1.id = table2.id WHERE table1.lastname LIKE 'smith' WHERE table1.firstname LIKE 'john' GROUP BY table2.id; 我想对其进行修改,使其仅选择高

我简化了下面的mysql查询,该查询统计表1中的主键作为外键出现在表2中的次数

SELECT table1.*, COUNT(table2.id) AS 'value'

FROM table1 INNER JOIN table2 ON table1.id = table2.id

WHERE table1.lastname LIKE 'smith'

WHERE table1.firstname LIKE 'john'

GROUP BY table2.id;

我想对其进行修改,使其仅选择高于某个阈值的计数,即,如果john smith的id在表2中出现10次,而我的阈值为20,则不会选择他的记录。

您不能仅使用table2.id进行分组。所有SELECT列都应在group by语句中使用。@Deathonator,我认为table2.id不是唯一的?@vutukuri,事实上,查询在获取计数并将其与表1中的相应记录一起列出方面效果很好,我只需要能够按amount@MichaelRushton,您是对的,table2.id不是unique@deathonater你没试过mellamokb的解决方案吗?它应该会帮助你。谢谢,但这不是我想要的,它似乎返回了大量的数据,即使我使用了非常具体的参数。工作起来很有魅力!非常感谢!
GROUP BY table2.id
  HAVING COUNT(table2.id) >= @Threshold
SELECT table1.*,table2.value as value
FROM table1,
(
SELECT table2.id, COUNT(table2.id) AS 'value'

FROM table1 INNER JOIN table2 ON table1.id = table2.id

WHERE table1.lastname LIKE 'smith' AND table1.firstname LIKE 'john'

GROUP BY table2.id
HAVING COUNT(table2.id)>=20
) table2
WHERE table1.id=table2.id;