想要获得唯一价值MYSQL,ARRAY,PHP

时间:2011-06-14 09:19:45

标签: php mysql

我们有一个MySQL查询,我们使用UNION ALL,我们为每个表获取两个值,我们只想获得一个值,或者我们做更多的事情,比如我们将整个结果存储到Array中然后排序因此,然后通过Foreach循环从数组中调用ID

这是MYSQL查询

  $num = mysql_query("(SELECT resorts.id From resorts,JUNE WHERE JUNE.id = resorts.id and JUNE.table_type = 'disp' AND JUNE.JUNE1!=0 AND resorts.category IN (1,2,3,4) AND resorts.area IN (1,2,3,4) Group By resorts.id LIMIT 0,7 ) UNION ALL (SELECT resorts.id From resorts,JULY WHERE JULY.id = resorts.id and JULY.table_type = 'disp' AND JULY.JULY1!=0 AND resorts.category IN (1,2,3,4) AND resorts.area IN (1,2,3,4) Group By resorts.id LIMIT 0,7 )");

我们正在获取这样的数据......

6月表ID = 78 6月表ID = 124 6月表ID = 11 7月表ID = 78 7月表ID = 124

我们只想做这个时间,我们只获取任何Double ID的单个值。就像我们得到JUNE ID = 78并且我们再次得到JULY ID = 78的相同ID。我们只想做(Double)id的唯一列表并忽略Single重复id。像这样 6月表ID = 78 6月表ID = 124

忽略其余的id,

注意: - 我们的主要动机是,我们只传递6月和7月份可用的ID,如果只有一个月,我们会忽略所有值。

2 个答案:

答案 0 :(得分:0)

请勿使用UNION ALL,请使用UNION

或者将所有查询都放入这样的子查询中:

SELECT DISTINCT * FROM ($yourOldQueryHere)

答案 1 :(得分:0)

我不确定你的表结构或数据,但是为了检索JUNE和JULY都可用的Resort ID,你可以在3个表之间使用INNER JOIN,如:

SELECT resorts.id
FROM resorts INNER JOIN JUNE ON resorts.id = JUNE.id
INNER JOIN JULY ON resorts.id = JULY.id
...
...

或者,如果上述内容不是您要查找的内容,并且您希望避免重复ID,请使用UNION代替UNION ALL