【问题标题】:Prevent count() returns "NULL" in mysql防止count()在mysql中返回“NULL”
【发布时间】:2014-09-08 02:47:24
【问题描述】:

在我的 mysql 查询中,我正在计算元素的数量(如果存在)。如果产品存在则返回实际计数,但如果没有产品则返回NULL。如果值为 null,我如何返回 0?我发现了与此问题相关的OneTwo 线程。但它们都没有帮助。

我的查询是

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

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

【问题讨论】:

  • 你能举例说明你的数据结构和数据吗?
  • 对不起..这些是大桌子。 :(
  • 好的,请尝试使用 count(t1.id) 而不是 count(*);
  • @CharveeShah :已经尝试过,它给出了 null。我也试过if(count(*) = NULL,0,count(*))。如果计数 > 0,这工作正常。否则再次为 NULL
  • 你试过mysql的COALESCE()函数吗?它与 IFNULL 相同。

标签: mysql count null


【解决方案1】:

你应该封装它:

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

【讨论】:

  • 谢谢你的帮助..但它再次返回 null.. :(, @Oscar Pérez
  • @Arun 这很奇怪......你是如何执行这个查询的?直接从mysql提示符?
  • 我使用navicat 来执行查询。 navicat 和 php 代码都返回 null
  • 只是为了确定:您是否 100% 确定 PHP 返回 NULL?请记住,在 PHP 中 0==NULL... 你应该使用 ===
  • 是的.. 我也在服务器的 sql 部分检查了它。
猜你喜欢
  • 2012-04-04
  • 2012-05-31
  • 2021-12-28
  • 2013-10-24
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多