1

我有 2 张桌子:

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),但还没有找到一个简单的解决方案。基本上我想要两个表中出现的不同竞争类型,没有重复。这可能吗?

4

1 回答 1

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
于 2012-04-05T00:21:51.323 回答