laravel5.6查询生成器sum

8fq7wneg  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(305)

我有一张有结构的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();
u0sqgete

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将为您提供空值。

5m1hhzi4

5m1hhzi42#

您可以使用雄辩的selectraw方法来实现这一点。

$rank['rank'] = DB::table('peserta')
                ->selectRaw('*, h1 + h2 + h3 as total')
                ->limit(30)
                ->orderBy('total', 'asc')
                ->get();
m528fe3b

m528fe3b3#

使用原始查询:

DB::table('peserta')
   ->select(
        '*', 
       DB::raw('(n1+n2+n3) as > total')
    )
   ->limit(30)
   ->orderBy('total', 'asc')
   ->get();

相关问题