You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优先取isDone=0行的MAX(id),无结果时取isDone=1的MAX(id)

方案1:排序取首(全数据库兼容,逻辑最直观)

直接利用排序优先级实现需求,isDone为0的行会排在最前,同分组下id倒序取最新,取第一条即可:

SELECT id
FROM ChatItem
WHERE CaseInvoiceId = 160670
ORDER BY isDone ASC, id DESC
LIMIT 1;

注:SQL Server/Access环境下把LIMIT 1替换为TOP 1,Oracle环境替换为FETCH FIRST 1 ROW ONLY即可。

方案2:聚合函数实现(适合批量查询多CaseInvoiceId的场景)

用条件聚合加空值合并函数实现,无需排序:

SELECT COALESCE(MAX(CASE WHEN isDone = 0 THEN id END), MAX(id))
FROM ChatItem
WHERE CaseInvoiceId = 160670;

逻辑说明:优先计算isDone=0的行的最大id,若结果为空(不存在isDone=0的行),则 fallback 到所有行的最大id,也就是isDone=1的最大id。如果需要批量查询多个CaseInvoiceId的对应值,只需要在后面加GROUP BY CaseInvoiceId即可。

内容的提问来源于stack exchange,提问作者tamikoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:09:02