Hi, you may add a dummy GROUP BY clause, to return no row if the table is empty:

   select min (x) from tbl group by null;

By the way, the good reasons for the standard behaviour may be the use of other aggregate functions like COUNT (*).

Op 23 feb 2013, om 11:51 heeft Pierre Chatelier het volgende geschreven:

Ok, thanks !

There are certainly good reasons for that, but I find it surprising at first sight.

Pierre


That's SQL standard -- query with aggregate functions always return at
least one row.


[tested under 3.6.12 and 3.7.15.2]

I have a question regarding the use of aggregate functions.

Let's imagine the following db :
create table A (id1 INTEGER UNIQUE PRIMARY KEY, id2 INTEGER);
It is empty.

The following query :
select id1,id2 from A;
returns nothing, there is no row.

However, the following query, using the aggregate min() :
select min(id1),id2 from A;
returns an empty line (displays '|' in the shell).

Using avg(), max()... will do the same.

With the C interface, SQLITE_ROW is returned, and I must test sqlite_column_type() against SQLITE_NULL to check that in fact, there is no result.

Is this expected behaviour ?

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to