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

如何在Laravel Eloquent中获取包含最大值的所有行?

获取某列最大值对应的所有行(Laravel Query Builder)

你的代码执行失败的原因是:在where方法中直接将子查询字符串作为第三个参数传入时,Laravel会将其视为普通字符串值进行匹配,而非执行这个子查询,导致无法正确匹配到最大值对应的行。

正确写法一:使用whereRaw执行原生SQL条件

直接将包含子查询的条件语句传入whereRaw,Laravel会原样执行该SQL片段:

$data = DB::table($table)
    ->whereRaw('col2 = (SELECT max(col2) from '.$table.')')
    ->get($fields);

正确写法二:先查询最大值再匹配

分两步执行,先获取col2的最大值,再用该值作为查询条件,逻辑更直观:

// 第一步:获取col2的最大值
$maxCol2 = DB::table($table)->max('col2');
// 第二步:查询最大值对应的所有行
$data = DB::table($table)
    ->where('col2', $maxCol2)
    ->get($fields);

正确写法三:使用Query Builder子查询构造器

利用Laravel的子查询构造器,避免手动拼接SQL,更符合框架风格且更安全:

// 构造子查询获取最大值
$maxSubquery = DB::table($table)->selectRaw('max(col2)');
// 主查询匹配子查询结果
$data = DB::table($table)
    ->where('col2', '=', $maxSubquery)
    ->get($fields);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:52:19