我有一个联合查询,如下所示。当在标题和说明之间都找到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%')
答案 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
关键字要好。从本质上讲,这会从输出中删除重复项。