即使计数为0,我也要计数。我当前的查询是
SELECT `id`,count(0) as `fetchpc` FROM `user` WHERE pid in('4,6,7,8') GROUP BY `id`
但是它只返回那些计数大于0的id
编辑: in('4,6,7,8')中使用的值首先在另一个查询中从数据库中获取。然后使用脚本将行转换为4,6,7,8。
因此所有值都存在于数据库中。
另外,返回的值有可能达到100个以上的值。
答案 0 :(得分:3)
您可以在“虚拟”查询中加入该查询,该查询以文字形式查询这些ID:
<?php
for($i = 0.99; $i<= 30.99; $i++){
$i = number_format((float)$i, 2);
echo $i;
if($i == 16.99){
echo '<--- selected';
}
if($i == 29.99){
echo '<--- selected';
}
if($i == 10.99){
echo '<--- selected';
}
echo '<br>';
}
答案 1 :(得分:0)
您可以使用派生表。我建议:
SELECT i.id, COUNT(u.id) as fetchpc
FROM (SELECT 4 as id UNION ALL
SELECT 6 as id UNION ALL
SELECT 7 as id UNION ALL
SELECT 8 as id
) i LEFT JOIN
`user` u
ON u.id = i.id
GROUP BY i.id;
从性能的角度来看,这比先汇总(在子查询中)然后再进行汇总要好得多。基本上,聚合(在这种情况下)必须聚合 all 数据,然后过滤掉不必要的行。
此公式首先过滤行,这将加快聚合速度。