MySQL查询消除了使用这个PHP代码

时间:2011-10-04 21:48:46

标签: php mysql

我有一个INNER JOIN表A与表B和表C的查询,我有另一个查询INNER JOIN表A与表D.我可以实现我想做的事情合并2个结果,删除重复项并在PHP代码中对它们进行排序,但我想知道MySQL是否具有此功能,我也认为一旦我理解它就会更快更容易编码。从本质上讲,我希望从查询2获得查询1的结果。或许以下内容将有所帮助:

查询1:

SELECT pkAssociation, associations.strNameEn, associations.strNameFr
FROM associations
INNER JOIN eventassociations ON fkAssociation = pkAssociation
INNER JOIN events on fkEvent = pkEvent
WHERE events.enumDeleted = 'no'
GROUP BY pkAssociation

查询2:

SELECT pkAssociation, associations.strNameEn, associations.strNameFr
FROM associations
INNER JOIN associationprograms AS aprogs ON aprogs.fkAssociation = associations.pkAssociation
GROUP by pkAssociation

这些表没有任何其他相关内容,但未在查询中显示。如果我没有正确地问这个问题,我很抱歉,我甚至不知道如何正确地提出这个问题。如果需要列名称或样本数据,那么我可以提供一些。很抱歉给您带来不便和长篇邮件。

1 个答案:

答案 0 :(得分:0)

您希望在两个查询之间放置UNION DISTINCT语句。这将合并两者的结果集并删除重复项。然后,您可以在所有UNIONS(如果有的话)之后放置ORDER BY子句。

例如:

SELECT col1, col2 FROM tableA

UNION DISTINCT

SELECT col1, col2 FROM tableB

ORDER BY col2 DESC