2017-07-29 2 views
0

mein Beispielcode ist wie folgt:Warum, wenn ich Zählergebnis verwende, ist leere Zeichenfolge?

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 

dieser Code nicht Zählung hatte, nahm ich einen String aus diesem Code, der leer ist, wenn ich diese Abfrage zählen I 0 bekommen annehmen, aber es zeigt nur eine leere Zeichenfolge. Warum gibt es mir statt 0 leere?

Antwort

2

COUNT() gibt nie NULL, noch einen String-Wert zurück. Deine Frage ist also etwas verdächtig.

Ich nehme an, dass das Problem etwas anders ist - Ihre Abfrage gibt überhaupt keine Zeilen zurück. Wenn Sie dann gehen, um COUNT() zu betrachten, wird es als NULL zurückgegeben (besonders wenn Sie es als eine skalare Unterabfrage verwenden), da die Zeile nicht vorhanden ist.

Dies kann passieren, wenn Sie eine GROUP BY Klausel haben. Wenn alle Zeilen herausgefiltert sind, werden keine Zeilen zurückgegeben.

Ich würde vorschlagen, dass Sie die GROUP BY-Klausel entfernen und die Anzahl der zurückgegebenen Zeilen zählen. Ich vermute, der Wert ist 0.

+0

danke mann! ja group durch make mein ergebnis leere string, wenn ich gruppenweise löschte mein Ergebnis als 0! vielen Dank :) – dood

Verwandte Themen