当表为空时,计数表行返回1行

时间:2017-08-10 10:44:01

标签: mysql yii2

我想用这个命令计算id为let的行,然后说32:

$countReviews = Yii::$app->db->createCommand("SELECT COUNT(*) 
                                              FROM `product_review`
                                              WHERE `product_review`.`product_id`=$book->id")->execute();

表中没有行,但结果返回1。这是为什么 ?这是完成任务的正确方法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

没有GROUP BY 的聚合查询总是返回一行。计数的为零,但行数为1.

我认为您正在查看查询返回的行数,而不是计数返回的值。

答案 1 :(得分:2)

execute()用于处理数据的sql查询(插入/更新/删除等)。正如documentation所说:

  

此方法仅应用于执行非查询 SQL语句,例如INSERT,DELETE,UPDATE SQL。 不会返回任何结果

您应该在此使用query(),或者甚至querySacalar(),因为您需要一个整数值。