sum 加 Group By 的使用

15 篇文章 2 订阅
8 篇文章 0 订阅

1、A 表 有server_id  为1的两条数据

2、B表有server_id 为1的数据也有两条

原本Sql是这样   乍一看没啥问题  但是group by 没生效 

SELECT a.server_id,sum(b.score) as score FROM `a` INNER JOIN `b` ON `a`.`server_id`=`b`.`server_id` WHERE  `b`.`server_id` = 1 GROUP BY `a`.`server_id` LIMIT 1

期望的值是 20 返回结果却是 40

修改Sql 构建子查询:

 

distinct说明:用于返回唯一不同的值。

select a.server_id, sum(b.score) from ( select distinct a.server_id from a)a inner join b on a.server_id = b.server_id group by a.server_id

Tp写法:

// 构建子查询
        $sql = Db::name('a')->field('distinct server_id')->buildSql();
        

        $r = Db::table($sql.'a')
            
            ->join('b','a.server_id = b.server_id')
            
            ->where('b.server_id', 1)
            
            ->field('a.server_id,sum(b.score) as score')
            
            //->group('a.server_id')
            
            ->find();

Laravel写法:

        $build_sql = DB::table('a')
            ->select('server_id')
            ->groupBy('ServerID');

        $r = DB::table( DB::raw("({$build_sql->toSql()}) as a") )

            ->join('b', 'a.server_id', 'b.server_id')

            ->whereDate('a.CreateTime', date('Y-m-d'))

            ->selectRaw('sum(b.score) as score')

            ->where('a.server_id', 1)

            ->first();

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值