查询联合删除重复项

时间:2019-03-01 05:43:37

标签: mysql codeigniter

我有一个联合查询,如下所示。当在标题和说明之间都找到searh查询时,它将返回重复的记录。如何避免搜索结果重复记录

    $SQL = "(SELECT * FROM {$this->blogs} WHERE LOWER(heading) LIKE '%" .strtolower($query) . "%' ) 
        UNION 
        (SELECT * FROM {$this->blogs} WHERE  LOWER(description) LIKE '%" . strtolower($query) ."%')";   
    $run = $this->db->query( $SQL );
    $this->db->last_query();

搜索

(SELECT * FROM tbl_wonderblogs WHERE LOWER(heading) LIKE '%indian army amfc%' ) UNION (SELECT * FROM tbl_wonderblogs WHERE LOWER(description) LIKE '%indian army amfc%')

1 个答案:

答案 0 :(得分:0)

您可以将两个条件放在一个查询中,而不是union

SELECT * 
FROM {$this->blogs} 
WHERE (   LOWER(heading) LIKE '%" .strtolower($query) . "%' 
       OR LOWER(description) LIKE '%" . strtolower($query) ."%'
      )

如果需要先进行标题匹配,则添加:

ORDER BY (LOWER(heading) LIKE '%" .strtolower($query) . "%') DESC

仍然,请确保您的表尚未包含重复的数据。如果是这种情况,则需要找出原因并解决,这比在DISTINCT之后添加SELECT关键字要好。从本质上讲,这会从输出中删除重复项。