我有一张有结构的table名称(varchar)h1(整数)h2(整数)h3(整数)我想选择(h1+h2+h3)作为总数,并按升序限制30。什么是正确的查询生成器?
> $rank['rank'] = DB::table('peserta')->select('*', '(n1+n2+n3) as > total')->limit(30)->orderBy('total', 'asc')->get();
u0sqgete1#
DB::table('peserta') ->select('*', DB::raw('(IFNULL(h1,0) + IFNULL(h2,0)) + IFNULL(h3,0) as total')) ->orderBy('total') ->limit(30) ->get();
如果列值之一为空,我将设置为0,否则如果h1、h2或h3之一为空,total将为您提供空值。
5m1hhzi42#
您可以使用雄辩的selectraw方法来实现这一点。
$rank['rank'] = DB::table('peserta') ->selectRaw('*, h1 + h2 + h3 as total') ->limit(30) ->orderBy('total', 'asc') ->get();
m528fe3b3#
使用原始查询:
DB::table('peserta') ->select( '*', DB::raw('(n1+n2+n3) as > total') ) ->limit(30) ->orderBy('total', 'asc') ->get();
3条答案
按热度按时间u0sqgete1#
如果列值之一为空,我将设置为0,否则如果h1、h2或h3之一为空,total将为您提供空值。
5m1hhzi42#
您可以使用雄辩的selectraw方法来实现这一点。
m528fe3b3#
使用原始查询: