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

在MYSQL中组合两个表并删除重复项的最佳方法是什么?,mysql,group-by,multiple-tables,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

我有两张桌子:

matches TABLE
   FIELDS: record, date, competition

outrights TABLE
   FIELDS: record, competition
我想选择的是按不同类型的比赛分组的行。下面是当我分别对待每个表时,效果很好的语句

首先,从“匹配”开始,仅当日期尚未过去时:

SELECT competition, date FROM matches WHERE date >= '$currentTime' GROUP BY competition
后跟“Outlinets”中的行:

SELECT competition FROM outrights GROUP BY competition

这是非常直接的,除了相同的竞争价值通常会出现在两个表中,但并不总是出现在两个表中。我研究了许多不同的方法,包括左连接和右连接,但没有找到一个简单的解决方案。基本上,我希望在两个表中显示不同的竞争类型,没有重复。这可能吗?

这就是您要找的。有点被这个问题弄糊涂了,但似乎您希望从两个表中分别列出竞争列

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

这就是你要找的吗。有点被这个问题弄糊涂了,但似乎您希望从两个表中分别列出竞争列

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

你做到了,丹,尽管我的回答把你弄糊涂了!谢谢你帮我省去了几个小时的挫折。你做到了,丹,尽管我的回答把你弄糊涂了!谢谢你帮我省去了几个小时的挫折。