Php mysql DISTINCT关键字不适用于多列联接表

Php mysql DISTINCT关键字不适用于多列联接表,php,mysql,sql,Php,Mysql,Sql,我在一个mysql查询中使用了mysqlDISTNCT关键字,以避免在搜索框中显示重复的数据 但是当我在SELECT上添加多个列名时,它不起作用 请告知如何进行 $query = " SELECT * FROM ( SELECT DISTINCT b.title,b.id, b.metakey FROM categories b WHERE b.title like '%".$searchc."%' AND b.pare

我在一个mysql查询中使用了mysql
DISTNCT
关键字,以避免在搜索框中显示重复的数据

但是当我在
SELECT
上添加多个列名时,它不起作用

请告知如何进行

$query = "

    SELECT * FROM (
        SELECT DISTINCT b.title,b.id, b.metakey
            FROM categories b
            WHERE  b.title like '%".$searchc."%' AND b.parent_id BETWEEN 84 AND 107 AND  b.level=3 ORDER BY LOCATE('".$searchc."', REPLACE(b.title, ' ', '')), b.title
    ) CLASS_CAT
        UNION ALL
            SELECT * FROM (
                SELECT DISTINCT a.title,  a.id, a.title as metakey
                    FROM content a join
                      categories b
                      on a.categories_id = b.id
                WHERE REPLACE(a.title, ' ', '') like '%".$searchc."%' 
                AND b.parent_id BETWEEN 84 AND 107 AND b.level=3 
             ) CLASS_ITEM
";

SELECT DISTINCT
将从一条
SELECT
语句中删除重复项
UNION ALL
指示系统不要在正在组合的两个集合之间查找重复项(每个
选择

改用
UNION
(不带
ALL
)。请注意,删除重复项检查的速度更快,因此如果知道要查询的集合是唯一的,请跳过dup检查


还要注意,通过行重复,我指的是每行中的每一列。如果任何列使行唯一,它将出现在结果集中。如果您只希望某些列是唯一的,则需要按
分组
并聚合其他列(例如
分组_CONCAT
)或者使用其他查询来获取其他相关数据。

子查询中应该区分哪些内容?@JayBlanchard:我想在a.title和b.titleWell
DISTINCT
中添加DISTINCT。如果您选择
id
列,则DISTINCT没有太多作用。要筛选出同时出现在联合体顶部和底部的重复项,请将
union all
替换为
union
@Andomar:完成更改后,仍然存在问题。如果我把a.title和b.ttile放在SELECt statemens上,它就起作用了,但当其他专栏经常提到SELECt时,它就不起作用了。如果你解释一下“它不起作用”,那会有帮助的。提供示例输入、实际输出和期望输出。您可以使用sqlfiddle.com设置一个示例。完成更改后,问题仍然存在。如果我把a.title和b.ttile放在SELECt statemens上,它就起作用了,但当其他专栏经常提到SELECt时,它就不起作用了。请通知Distinct和UNION ALL检查返回的整行的DUP。每一列必须具有相同的值,行才能不重复。如果您希望标题和id是唯一的,那么如果第三列不重复,您对它的期望是什么?