即使在php sql函数中添加distinct和group by后也会出现重复值

问题描述

我在 PHP codeigniter 中有一个网站,我有一个搜索框,用户可以在其中搜索并从数据库获取数据,数据使用 searhBox 中的 datalist 显示,我创建了以下用于在 codeigniter 中搜索函数

 public function keywordsearch() {
        
         $this->db->select('category.category_name,link.link_name,group_concat(link.keyword) as keyword');
         $this->db->distinct('link.keyword');
         $this->db->join('category','category.category_name=link.category');
         $this->db->group_by('link.keyword');
         $query = $this->db->get('link');
         return $query->result();
     }

我的表格如下:

enter image description here

我在此函数中使用的 4 列链接名、链接网址、类别和关键字。正如您在表格中看到的,某些列中有重复值我试图使用 group by 和 distinct 来隐藏重复值,但我仍然得到如下重复值:

enter image description here

谁能告诉我这里有什么问题,提前致谢

解决方法

您不应该在聚合结果中使用您想要的同一列进行分组。 尝试使用选定但未聚合的列名称

public function keywordsearch() {
    
     $this->db->select('category.category_name,link.link_name,group_concat(distinct link.keyword) as keyword');
     $this->db->join('category','category.category_name=link.category');
     $this->db->group_by('category.category_name,link.link_name');
     $query = $this->db->get('link');
     return $query->result();
 }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...