1
我有一个数据库,有一个表格记录车辆最后一次燃料。它有一个整数类型的日期列。Android上的SQLite MAX
我需要能够确定哪个是最后一次加油日期。我使用:
Cursor cursor = db.query(FUEL_USE_TABLE_NAME, LAST_FUEL_UP_DATE_CLAUSE,
REGISTRATION_NO_COLUMN + "=? ", new String[]{registrationNumber},
null, null, null);
其中LAST_FUEL_UP_DATE_CLAUSE
是MAX(date_time)
,其中date_time
是有问题的列的名称。
当表中有条目但编写单元测试时,此工作正常我希望游标的行数在表中没有条目时为零,但是我会得到一个值为零的单行。即date_time
列中的最大值为零,实际上没有值。
我很高兴为此编码(使用0
表示没有记录而不是-1
),但想知道这是预期的行为还是我做错了什么。
“..将在同一列的ORDER BY中最后返回的值”。推测这只适用于表中有一些值的情况。在我的情况下,没有值,所以ORDER BY查询会返回一个空的游标,我相信它与MAX返回的零不同。 – barry
这是一个聚合函数..它**总是**返回一个记录,即使数据库是空的。在文档中说得很对:当且仅当组中没有非NULL值时,Aggregate max()才会返回NULL。“它是有意义的(sorta),空列的值是”0“。 :p – Barak
好的,谢谢你的帮助。 – barry