차량을 마지막으로 가동했을 때 테이블을 기록하는 데이터베이스가 있습니다. 정수 유형의 날짜 컬럼이 있습니다.안드로이드에서 SQLite MAX
나는 마지막 연료 공급 날짜를 결정할 수 있어야합니다. 내가 사용하고 있습니다 : date_time
문제의 열의 이름입니다 LAST_FUEL_UP_DATE_CLAUSE
이 MAX(date_time)
입니다
Cursor cursor = db.query(FUEL_USE_TABLE_NAME, LAST_FUEL_UP_DATE_CLAUSE,
REGISTRATION_NO_COLUMN + "=? ", new String[]{registrationNumber},
null, null, null);
.
테이블에 항목이있을 때 제대로 작동하지만 단위 테스트를 작성하는 동안 테이블에 항목이 없을 때 커서의 행 수가 0이 될 것으로 예상했지만 대신 값이 0 인 단일 행을 얻습니다. 나는. 사실상 값이 없을 때 date_time
열의 최대 값은 0입니다.
-1
의 레코드가 의미 없음
0
사용)이 문제를 해결 코드에 행복 해요,하지만이 동작이 예상되는 경우 알고 싶다, 아니면 내가 뭔가 잘못하고있는 중이 야.
".. 같은 열의 ORDER BY에서 마지막으로 반환되는 값입니다." 아마도 테이블에 값이있는 경우에만 적용됩니다. 제 경우에는 ORDER BY 쿼리가 빈 커서를 반환하므로 0이 아닌 다른 값이 반환됩니다. MAX()가 반환됩니다. – barry
집계 함수입니다. DB가 비어 있더라도 ** 항상 ** 하나의 레코드를 반환합니다. docs에 이렇게 적혀 있습니다 :'Aggregate max()는 그룹에 NULL이 아닌 값이없는 경우에만 NULL을 반환합니다. '그것은 의미가 있지만 (sorta), 빈 열의 값은 "0"입니다. : p – Barak
도움, 감사합니다. – barry