首页 > 解决方案 > 如果大于0,计算行数并返回结果

问题描述

仅当内容> 0 时,我才尝试显示结果

SELECT actors.*, (SELECT count(*) FROM `content_actors`
                  WHERE content_actors.actor = actors.record_id) AS getCount
FROM actors

如果我尝试添加查询

WHERE getCount > 0

我会有错误

'where 子句'中的未知列'getCount'

标签: phpmysqlsql

解决方案


在 MySQL 中,您可以使用having子句:

SELECT actors.*,
       (SELECT count(*) FROM `content_actors` WHERE content_actors.actor = actors.record_id) AS getCount
FROM actors
HAVING getCount > 0;

这是一个 MySQL 扩展。

假设actors.record_id是唯一的(可能是主键),这可以写成:

SELECT a.*, COUNT(*) as getCount
FROM actors a JOIN
     content_actors ca
     ON ca.actor = a.record_id
GROUP BY a.record_id;  -- assumes this is unique/primary key

不需要过滤,因为JOIN至少需要一个匹配项。


推荐阅读