插入并删除Expense表所有记录后,查询MAX(id)返回null的原因
为什么查询MAX(id)会返回null?
这事儿我太熟了!其实核心原因特别直白:
- 当你的
Expense表中没有任何记录时,SQL的MAX()聚合函数就会返回null——因为它根本找不到任何数据来计算最大值,这是SQL的标准行为,和你之前有没有插入、删除过记录完全没关系,只看当前表的实际状态。 - 你之前插入5条记录又逐条删掉,现在表已经是空的了,所以执行
SELECT MAX(id) as last_inserted_id FROM Expense自然就得到null啦。
怎么解决这个问题?
如果不想拿到null,可以用这两种方式处理:
- 用SQL的
COALESCE()函数把null转换成你需要的默认值(比如0),修改后的查询语句如下:SELECT COALESCE(MAX(id), 0) as last_inserted_id FROM Expense - 在代码里做判断,如果
maxID是null,就手动赋值为0,比如:final maxID = result.first["last_inserted_id"] ?? 0;
内容的提问来源于stack exchange,提问作者rozerro
相关产品推荐
相关产品推荐

