我有两个表A
和B
,其中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
条件。有关如何实现所需结果的指示?
答案 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