在MYSQL中组合2个表并删除重复项的最佳方法是什么?

时间:2012-04-05 00:11:46

标签: mysql group-by multiple-tables

我有两张桌子:

matches TABLE
   FIELDS: record, date, competition

outrights TABLE
   FIELDS: record, competition

我想要的是选择按不同竞争类型分组的行。以下是我单独处理每个表时工作正常的陈述。

首先,从“匹配”开始,并且只有在日期尚未过去时才会显示:

SELECT competition, date FROM matches WHERE date >= '$currentTime' GROUP BY competition

跟随'outrights'中的行:

SELECT competition FROM outrights GROUP BY competition

这一切都非常简单,除了相同的竞争价值经常(但不总是)出现在两个表格中。我已经看过很多不同的方法(包括LEFT和RIGHT JOINS),但还没有找到一个简单的解决方案。基本上我想要两个表中出现的不同竞争类型,没有重复。这可能吗?

1 个答案:

答案 0 :(得分:4)

这就是你要找的东西。有点困惑的问题,但似乎你想要两个表格的竞争列的DISTINCT列表

SELECT DISTINCT competition 
FROM
(
    SELECT competition  FROM matches
    UNION
    SELECT competition from outrights
) AS t

如果您需要仅在两个表格中出现的独特竞赛,而不仅仅是一个或两个,您可以使用

SELECT DISTINCT competition 
FROM
(
    SELECT competition  FROM matches INNER JOIN 
        outrights ON matches.competition = outrights.competition
) AS t