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

Laravel中如何单查询计算带符号的Quantity列总和?

单查询实现方案

当然可以用单查询完成计算,核心思路是在数据库层面通过条件判断动态调整Quantity的正负,再一次性求和,避免两次查询的开销。

方法1:使用CASE语句

$total = Transaction::selectRaw('SUM(CASE WHEN Type = "+" THEN Quantity ELSE -Quantity END) as total')
    ->value('total');

方法2:使用IF函数(更简洁)

$total = Transaction::selectRaw('SUM(IF(Type = "+", Quantity, -Quantity)) as total')
    ->value('total');

补充说明

你原来的写法存在语法错误,正确的两次查询写法应该是:

$total = Transaction::where('Type', '+')->sum('Quantity') - Transaction::where('Type', '-')->sum('Quantity');

但这种方式需要两次请求数据库,而上面的单查询方案只需要一次,性能更优,尤其是数据量较大时差异会更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:34:59