2012-04-05 60 views
1

我有2个表:在MYSQL中合并2个表并删除重复项的最佳方式是什么?

matches TABLE 
    FIELDS: record, date, competition 

outrights TABLE 
    FIELDS: record, competition 

我想什么,是选择通过不同类型的比赛分组的行。以下是当我单独处理每个表时工作正常的语句。

首先,从“匹配”且仅当时间还没有过去已经:

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

其次是行从“夺标”:

SELECT competition FROM outrights GROUP BY competition 

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

回答

4

这是你在找什么。有点被这个问题困惑但现在看来,你想从两个表

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

竞争列的DISTINCT房源如果需要只出现在两个表中不同的比赛,而不是只有一个或两个,你可以使用

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

你已经做到了丹,尽管我的答案让你困惑!谢谢你为我节省了几个小时的挫折。 – user1267980 2012-04-05 00:33:02

相关问题