在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
你做到了,丹,尽管我的回答把你弄糊涂了!谢谢你帮我省去了几个小时的挫折。你做到了,丹,尽管我的回答把你弄糊涂了!谢谢你帮我省去了几个小时的挫折。