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;
fonte
2011-10-30 15:22:10
Hmm. C'è un modo per non restituire nulla invece di "contrassegnare" il nulla? – David
Sì ... usando 'avendo'. Vedi la mia risposta aggiornata per maggiori informazioni. –