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