ThinkPHP使用distinct和group by去重复的数据

在一对多关联查询中,遇到重复数据的问题,这不是我们想要的结果,下面就是两种常用的去重方法。 

1、distinct方法去重

$data=$test_data->Distinct(true)->field('descriprion')->order('description desc')->select();

2、group方法去重

$items = Suspect::alias('s')
    ->leftJoin("activity a","a.suspect_id = s.id")
    ->field("s.*,a.id as activity_id")
    ->group('id')
    ->select();

Mysql语句:

SELECT `s`.*,a.id as activity_id FROM `suspect` `s` LEFT JOIN `activity` `a` ON `a`.`suspect_id`=`s`.`id` GROUP BY `id`

 

对于两种去重方式: 

1、distinct去重、简单易用,但只能对于单一字段去重,并且最终的结果也仅为去重的字段,实际应用价值不是特别大。 

2、group去重,最终的显示结果为所有字段,且对单一字段进行了去重操作,效果不错,但最终显示结果除去去重字段外,按照第一个字段进行排序,可能还需要处理。

原文链接:https://blog.csdn.net/qq422431474/article/details/79582239

原文地址:https://www.cnblogs.com/bushui/p/13895938.html