2017-07-29 88 views
0

我的示例代码是这样的:为什么当我使用count结果是空字符串?

select count(*) cnt 
from 
(
    select title,person,first_value,second_value,third_value 
    from 
    (
     select a.title,b.person,b.id_meta b_meta,b.value 
     from tbl_one a 
     inner join tbl_param b on a.param=b.id 
     where b.id in ('first_value','second_value','third_value') 
    ) x 
    pivot 
    (
     sum(value) 
     for param in ([first_value],[second_value],[third_value]) 
    ) pvt 
) r 
inner join tbl_two c on r.person=c.person 
inner join tbl_person p on r.person=p.id 
group by p.title,r.first_value,r.second_value,r.third_value 

这段代码没有数,我从这个代码是空的,当我数这个查询我想获得0的字符串,但它只能显示一个空串。为什么它给我空而不是0?

回答

2

COUNT()永远不会返回NULL,也不是字符串值。所以,你的问题有点可疑。

我认为问题稍有不同 - 您的查询完全没有返回任何行。然后,当您查看COUNT()时,它将作为NULL返回(特别是在您将它用作标量子查询时),因为该行不存在。

这可能发生在您有GROUP BY子句时。如果所有行都被过滤掉,则不会返回任何行。

我建议你删除GROUP BY子句并计算返回的行数。我怀疑价值是0

+0

谢谢你!是通过使我的结果为空字符串,当我按部分删除组我的结果显示为0!非常感谢你 :) – dood

相关问题