【问题标题】:MySQL ALL Combinations from Two Tables [duplicate]来自两个表的 MySQL ALL 组合[重复]
【发布时间】:2014-08-19 11:50:15
【问题描述】:

我有两张这样的桌子......

table1
league, date

table2
league, team

我需要做的是在联赛相互匹配时获得所有可能的组合。

所以例如在table1中我会有..

Bel1, 39319
Bel1, 39320
Ita1, 39321

例如在table2中..

Bel1, Anderlecht
Bel1, Bergen
Bel1, Dender

输出必须给我..

Bel1, 39319, Anderlecht
Bel1, 39319, Bergen
Bel1, 39319, Dener
Bel1, 39320, Anderlecht
Bel1, 39320, Bergen
Bel1, 39320, Dener

这可能吗?我曾尝试在 excel 中执行此操作,但对于我需要处理的数据量,它将超过一百万行并且非常耗时,因此我希望我可以在 MySQL 中执行此操作。

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    这称为cross join。您可以将其用作:

    select t1.*, t2.*
    from table1 t1 cross join
         table2 t2;
    

    但是,我怀疑您确实想要定期加入:

    select t1.*, t2.col1
    from table1 t1 inner join
         table2 t2
         on t1.col1 = t2.col1;
    

    您的样本数据没有'Ita1' 的输出,这表明您确实想要匹配。

    【讨论】:

    • 否则称为笛卡尔积。另请注意,从 MySQL 5 开始,JOININNER JOINCROSS JOIN 是同义词。
    • @JaredFarrish 。 . .我永远不会注意到这一点,因为我认为这是一个非常糟糕的主意并且违反了标准。
    • 非常感谢!
    猜你喜欢
    • 2016-01-10
    • 2013-03-24
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多