今天碰到一个很奇葩的问题,卡了我很久。用laravel写查询,加了 GroupBy 之后再 count,和原生语句里统计的数量不对。搞了很久,终于知道原因了。
第一:GroupBy之后的Count返回的是分组后的第一组的数量
通过GroupBy分组后,再执行Count()函数返回的是:分组后数据,第一个分组的数量。
正确的方法应该是:
$count = VipCard::where('uid', $uid)->count(DB::raw('DISTINCT(serial_number)'));