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

Laravel中SQL CASE表达式内两列相减的语法错误解决方法

修正Laravel中CASE表达式的语法错误,实现自定义字段计算

你的CASE表达式触发语法错误,核心原因是两个SQL语法规范问题:CASE语句必须用END闭合,且字段别名AS要放在整个CASE表达式的末尾,不能写在分支内部。

正确的实现代码如下:

public static function getAllData()
{
    $records = DB::table('orders as t1')
        ->leftjoin('payments as t2', 't1.ord_id', '=', 't2.pay_ord_id')
        ->select(DB::raw("CASE WHEN t2.pay_type_id = 190 THEN t1.ord_total - t2.pay_amount ELSE 0 END AS Paid_Amount_Online"),
        // 此处添加其他需要查询的字段
        )
        ->get();
    
    return $records;
}

额外注意事项:

  • 给pay_type_id加上表别名t2.,避免多表关联时出现字段歧义
  • 增加ELSE 0分支,确保当pay_type_id不等于190时,Paid_Amount_Online字段有默认值,导出Excel时不会出现空值
  • 整个CASE表达式必须以END收尾,这是SQL语法的强制要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:20:41