如何将MySQL中Products表每行与Grade表所有行组合?
实现MySQL两表全组合(笛卡尔积)
你需要的是两个表的笛卡尔积——让Products表的每一行都和Grade表的所有行配对,普通带关联条件的JOIN无法实现这个效果,得用以下两种方式:
方式一:使用CROSS JOIN(标准写法)
这是最直观的写法,明确表示要做全组合:
SELECT p.Product, g.Grade FROM Products p CROSS JOIN Grade g;
方式二:不带关联条件的隐式连接
这种写法和CROSS JOIN效果完全一致,是早期SQL的常用写法:
SELECT p.Product, g.Grade FROM Products p, Grade g;
关键说明
你之前用Join没成功,大概率是给Join加了不必要的关联条件(比如ON p.ID = g.ID),这样只会匹配ID相同的行,而你需要的是所有行的无差别组合,所以不能加任何关联条件。
内容的提问来源于stack exchange,提问作者R13
相关产品推荐
相关产品推荐

