如果没有找到行,MySQL会使计数不返回任何内容

时间:2014-11-02 02:20:11

标签: php mysql pdo

我试图在我的MySQL查询中使用计数来计算具有匹配列的行数,并且查询正在运行,但是当使用select查询计数时,返回没有行, count值仍然返回0,因此查询将返回一个空行,除了count列为0。

这是我的疑问:

SELECT
    forum_threads_forums.id,
    forum_threads.title,
    forum_threads.description,
    forum_threads.views,
    COUNT(DISTINCT forum_posts_threads.post_id) AS post_count,
    users.id AS user_id,
    users.username AS user_username
FROM
    forum_threads
INNER JOIN
    forum_threads_forums
ON
    forum_threads.id=forum_threads_forums.thread_id
AND
    forum_threads_forums.forum_id=:forum_id
LEFT OUTER JOIN
    forum_posts_threads
ON
    forum_posts_threads.thread_id=forum_threads_forums.thread_id
INNER JOIN
    users
ON
    forum_threads.user_id=users.id

当选择查询没有返回任何行时,计数仍然存在。所以我得到了这样的结果:

id  title   description views   post_count  user_id user_username
                                0

我希望它什么都不返回,这样我就可以用PHP可靠地计算结果。

有没有人知道如何实现这个目标?我输了。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:2)

添加:

HAVING post_count > 0

到查询结尾。

如果有任何匹配,它将返回1行,post_count将包含不同帖子的数量,如果没有匹配则为0行。