Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql联合查询重复行_Php_Mysql - Fatal编程技术网

Php Mysql联合查询重复行

Php Mysql联合查询重复行,php,mysql,Php,Mysql,我在一个交友网站上工作,多亏了这些伟大的答案,我终于提出了这个问题。我完全是个新手:) 这个联合查询的问题是它似乎没有删除重复的条目,我不知道为什么 用户名-是加入网站的人员的姓名 意愿-是关于他们愿意做什么的,是他们个人资料页面的一部分 例如,如果我搜索单词“午餐”(如下面的查询中),查询将在其用户名或个人资料中查找具有午餐“角色的人 但有时,某人的用户名和个人资料中都有“午餐”一词 如何删除这些重复行 我将此查询用于php导航代码 你能帮忙吗 result = mysql_query("

我在一个交友网站上工作,多亏了这些伟大的答案,我终于提出了这个问题。我完全是个新手:)

这个联合查询的问题是它似乎没有删除重复的条目,我不知道为什么

用户名-是加入网站的人员的姓名

意愿-是关于他们愿意做什么的,是他们个人资料页面的一部分

例如,如果我搜索单词“午餐”(如下面的查询中),查询将在其用户名或个人资料中查找具有午餐“角色的人

但有时,某人的用户名和个人资料中都有“午餐”一词

如何删除这些重复行

我将此查询用于php导航代码

你能帮忙吗

result = mysql_query("

(SELECT 1 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND username LIKE '%lunch%') 

UNION 

(SELECT 2 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND age BETWEEN '28' AND '45' AND willingness LIKE '%lunch%' )

ORDER BY sort_col 

LIMIT ".$offset.", ".$rowsperpage."");
有什么想法吗


谢谢大家!

您的
排序列
保证两个查询之间的行始终是不同的(1对2),因此不会出现重复。

解决方法。您可以使用:

SELECT username, pic0 
FROM ".$table." 
WHERE ( username LIKE '%lunch%' ) 
   OR ( username IS NOT NULL 
      AND age BETWEEN 28 AND 45 
      AND willingness LIKE '%lunch%' 
      )
ORDER BY ( username LIKE '%lunch%' ) DESC

这是strage,我在实际使用代码时看到了它们,知道为什么吗?请记住,当用户名为时,会出现术语“午餐”和重复行,并在其个人资料中显示为“午餐”,该名称也会显示为“午餐”。所以查询会列出两次。@webmasters如我所说,用户名为“午餐”的行的排序列值为1,配置文件中包含“午餐”的行的排序列值为2。因此,这两行不是完全重复的,也不会通过UNION操作消除重复。Ty非常感谢您将其清除。有没有一种方法可以让用户名“午餐”从查询中删除它的配置文件行,或者类似的东西?基本上能找到解决这个问题的方法吗?