mysql - 防止 count() 在 mysql 中返回 "NULL"

标签 mysql count null

在我的 mysql 查询中,如果元素存在,我将对其进行计数。如果产品存在,它返回实际计数,但如果没有产品,则返回 NULL。如果值为 null,我如何返回 0?我找到了 One , Two与此问题相关的线程。但它们都没有帮助。

我的查询是

SELECT
    COUNT(*) AS num
FROM
    table1 AS t1
JOIN table2 AS t2 ON t2.id = t1.id_fk
JOIN table3 AS t3 ON t3.id = t2.t3_id_fk
JOIN table4 AS t4 ON t4.id = t2.t4_id_fk
JOIN table 5 AS t5 ON t5.t2_id_fk = t2_id
WHERE pd.product_url = 'sample_product'
AND mcd.main_category_url = 'sample_category'
AND scd.sub_category_url = 'sample_sub_category'
AND mpd.merchant_prod_status = 'active'
AND pd.product_status = 'active'
AND mcd.main_category_status = 'active'
AND scd.sub_category_status = 'active'
GROUP BY t1.id

我还尝试了 IFNULL(count(*), 0)。它也给 NULL

请帮助我...任何帮助将不胜感激。提前谢谢你

最佳答案

你应该封装它:

SELECT IFNULL(num,0)
  FROM ( SELECT COUNT(*) AS num
           FROM table1 AS t1
           JOIN table2 AS t2 ON t2.id = t1.id_fk
           JOIN table3 AS t3 ON t3.id = t2.t3_id_fk
           JOIN table4 AS t4 ON t4.id = t2.t4_id_fk
           JOIN table 5 AS t5 ON t5.t2_id_fk = t2_id
          WHERE pd.product_url = 'sample_product'
            AND mcd.main_category_url = 'sample_category'
            AND scd.sub_category_url = 'sample_sub_category'
            AND mpd.merchant_prod_status = 'active'
            AND pd.product_status = 'active'
            AND mcd.main_category_status = 'active'
            AND scd.sub_category_status = 'active'
       GROUP BY t1.id
      ) s

关于mysql - 防止 count() 在 mysql 中返回 "NULL",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24800007/

相关文章:

mysql - 在数据库列中存储结构化数据?

mysql - 运行 MySQL CREATE TABLE 语句时出现语法错误

mysql - 如何使用 MySQL 中的表数据得到下面的结果?

php - MySQL计数查询不起作用,但它显示记录列表

java - java中如何统计tax中某个关键字出现了多少次?

sql - 带有 NULL 或 IS NULL 的 IN 子句

java - 如何修复 BoneCP 中的 : Exception in thread "main" java. lang.NoClassDefFoundError

mysql - 仅选择与列表列值匹配的一行

mysql。如何将行插入到具有外键列的空值的子表

java - 将 null 分配给 Java 中的 ArrayList 项