【问题标题】:mysql count brings back at least 1 rowmysql 计数带回至少 1 行
【发布时间】:2011-08-15 09:47:47
【问题描述】:

我最近调了工作,从使用 T-SQL 转到 MySql。到目前为止一切顺利,直到今天。

我正在运行以下 sql 脚本:

 SELECT PB.idproductbundle AS ID, 
         PB.Name AS Name,
         PB.Discount AS Discount,
         PB.DiscountIsPercent AS DiscountIsPercent,  
         COUNT(PB_P.idproductbundle) AS ProductCount
 FROM `mydb`.productbundles AS PB
 LEFT JOIN `mydb`.ProductBundle_Product PB_P ON PB_P.idproductbundle = PB.idproductbundle

返回所有产品捆绑包的简单命令,并计算该捆绑包中有多少产品。

奇怪的是,表中目前没有数据:productbundles 或 ProductBundle_Product。

但它坚持带回 1 行。所有列都是它们的默认值:

ID 名称折扣 DiscountIsPercent ProductCount

空,空,空,空,'0'

在 T-Sql 中,这将没有行。

【问题讨论】:

    标签: mysql count


    【解决方案1】:

    因为您在 select 中有一个 COUNT 子句,如果没有满足查询的行,它将返回零。因此,您可以保证至少有一行 - COUNT 的结果告诉您有零行。

    【讨论】:

    • 有没有办法解决这个问题?必须是普通查询。
    • 您可以在业务逻辑中处理它。有一个条件检查计数是否为 0 并且其他字段为空,并且有一个确切的行然后将其视为一个空结果集。
    【解决方案2】:

    原来我错过了一个组:/

     SELECT PB.idproductbundle AS ID, 
             PB.Name AS Name,
             PB.Discount AS Discount,
             PB.DiscountIsPercent AS DiscountIsPercent,  
             COUNT(PB_P.idproductbundle) AS ProductCount
     FROM `ukiss-order-management`.productbundles AS PB
     LEFT JOIN `ukiss-order-management`.ProductBundle_Product PB_P ON PB_P.idproductbundle = PB.idproductbundle
     GROUP BY PB.idproductbundle
    

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 2013-01-30
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      相关资源
      最近更新 更多