Php mysql DISTINCT关键字不适用于多列联接表
我在一个mysql查询中使用了mysqlPhp 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
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.titleWellDISTINCT
中添加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是唯一的,那么如果第三列不重复,您对它的期望是什么?