Mysql 使用UNION ALL对子查询中的GROUP BY进行分组

Mysql 使用UNION ALL对子查询中的GROUP BY进行分组,mysql,subquery,union-all,Mysql,Subquery,Union All,我有两个表,一个显示搜索查询历史记录,另一个显示位置 第一个表用于搜索查询:searchTerm | date | userId | historyId 第二个是位置:userId | date | historyId | lat | lng 我使用UNIONALL将这些集合在一个子查询中,并使用JOIN LEFT和JOIN RIGHT创建完全联接 SELECT st, fa FROM (SELECT webHistory.searchTerm AS st, l

我有两个表,一个显示搜索查询历史记录,另一个显示位置

第一个表用于搜索查询:searchTerm | date | userId | historyId 第二个是位置:userId | date | historyId | lat | lng

我使用UNIONALL将这些集合在一个子查询中,并使用JOIN LEFT和JOIN RIGHT创建完全联接

SELECT st, fa FROM
                 (SELECT webHistory.searchTerm AS st, locationHistory.fullAddress AS fa
                  FROM webHistory LEFT OUTER JOIN locationHistory
                  ON webHistory.historyId=locationHistory.historyId
                  UNION ALL
                  SELECT webHistory.searchTerm as st, locationHistory.fullAddress AS fa
                  FROM webHistory RIGHT OUTER JOIN locationHistory
                  ON webHistory.historyId=locationHistory.historyId) t
每件事都运行得很好,我得到的结果只是webHistory表中的条目,locationHistory表也是如此。我遇到的问题是,当我得到同时添加到这两个行中的行时。他们表演了两次

我不能仅仅使用工会,因为它会加入比我想要的更多的组织。如果添加两个相同的搜索,而不是显示两个,则会将它们合并为一个。所以我需要使用UNION ALL

我必须使用union,因为我从左到右加入,在mySql中不支持完全加入

所以我假设我需要按historyId分组,因为这个id在同时添加的行上总是相同的(当按查询和位置进行搜索时)。问题是,我已经尝试和测试,但我似乎无法让这个工作。我错过什么了吗

最后,当我问一个问题时,由于我还没有达到测试的目的,orderby
date
会出现在外部查询还是子查询上,因为我想显示最新的结果作为第一个结果

/*更多信息*/

我需要输出:

如果没有完整地址,则搜索术语。 如果没有搜索词,则为完整地址。 SearchTerm和fullAddress(如果两者都有)


目前,它输出前两个罚款,但后者将输出两次

据了解,您希望消除具有相同historyId的重复项,因此只要该historyId包含在
联合中,您就应该能够使用
联合
,这样就不会消除具有另一个historyId的重复项

SELECT st, fa FROM
 (SELECT webHistory.searchTerm AS st, 
         locationHistory.fullAddress AS fa, 
         webHistory.historyId
  FROM webHistory LEFT OUTER JOIN locationHistory
  ON webHistory.historyId=locationHistory.historyId
  UNION
  SELECT webHistory.searchTerm as st, 
         locationHistory.fullAddress AS fa,
         locationHistory.historyId
  FROM webHistory RIGHT OUTER JOIN locationHistory
  ON webHistory.historyId=locationHistory.historyId) t

你能给出一些样本数据和期望的结果吗?我很难准确理解您希望看到的结果。很抱歉,我很难解释它,我现在将添加更多信息。