根据子项的数量获取父表的记录

时间:2016-11-08 14:41:15

标签: mysql sql

我有两个表AB,其中B具有A的外键(即A可以在B中有零个或多个子项{1}}而每个B记录完全属于一个A记录。

现在我要从A中获取B中所有记录<{1}}中的 x (包括)零)。

如何实现聚合函数的这种比较?

SELECT A.*, COUNT(B.id) AS child_cnt
  FROM A
  LEFT JOIN B
         ON A.id = B.foreign_id
GROUP BY A.id

但是,我当然无法为WHERE添加child_cnt条件。有关如何实现所需结果的指示?

2 个答案:

答案 0 :(得分:2)

使用HAVING,例如

SELECT A.*, COUNT(B.id) AS child_cnt
  FROM A
  LEFT JOIN B
         ON A.id = B.foreign_id
GROUP BY A.id
HAVING child_cnt < 17;

答案 1 :(得分:1)

您可以使用过滤来过滤结果

SELECT A.*, ifnull(COUNT(B.id), 0) AS child_cnt
FROM A
LEFT JOIN B ON A.id = B.foreign_id
GROUP BY A.id
HAVING COUNT(B.id) < X