2011-10-30 7 views

risposta

7

Le funzioni di aggregazione restituiscono qualcosa anche se non viene trovato nulla, semplicemente perché raggruppano in modo implicito tutte le (eventuali) righe della tabella per ottenere un valore aggregato. Prendete count per esempio:

sqlite> create table foo (a int not null); 
sqlite> select count(a) from foo; 
0 

null è di min come 0 è quello di count dove non vengono restituite righe.

Questa può essere una proprietà utile. Si consideri il seguente esempio:

sqlite> select ifnull(min(a), "I'm null") from foo; 
I'm null 

Se si desidera filtrare questo caso in modo non vengono restituiti record, è possibile utilizzare una clausola having (e rendere l'esplicito raggruppamento):

sqlite> select min(a) as min_a from foo group by a having min_a not null; 
+0

Hmm. C'è un modo per non restituire nulla invece di "contrassegnare" il nulla? – David

+0

Sì ... usando 'avendo'. Vedi la mia risposta aggiornata per maggiori informazioni. –

Problemi correlati