[英]Sql to generate all combination from 4 tables
我有3张桌子
Table1: Table2: Table3:
**Users** **Posts** **Articles**
Name| Title| Title|
Raj Post1 Article1
Sujay Post2 Article2
Bijay Post3 Article3
Jijay Post4 Article4
现在,我想将它们的所有可能组合组合起来,并放入另一个表中
就像我想将其放在表中tmp_all_cobinations
Table: **tmp_all_combinations**
Name
Raj.Post1.Aticle1
Raj.Post1.Aticle2
Raj.Post1.Aticle3
Raj.Post1.Aticle4
Raj.Post2.Aticle1
...
Raj.Post3.Aticle1
....
Sujay.
....
通过这种方式
在三个表之间进行交叉INNER JOIN
,这在MySQL中可以通过执行不带ON
限制的INNER JOIN
来实现。
INSERT INTO tmp_all_combinations (Users, Posts, Articles)
SELECT t1.Users, t2.Posts, t3.Articles
FROM Table1 t1
INNER JOIN Table2 t2
INNER JOIN Table3 t3
如果使用的是Postgres,则可以用CROSS JOIN
替换INNER JOIN
CROSS JOIN
以得到相同的结果。
如果tmp_all_combinations
不存在,则可以创建它,并确保这些列具有与三个源表相同的类型。
解决此问题的ANSI-SQL方法是使用cross join
:
INSERT INTO tmp_all_combinations
SELECT table1.name, table2.title, table3.title
FROM table1
CROSS JOIN table2
CROSS JOIN table3
基本上,您需要的是一个没有任何列要联接的联接,因此它将是所有列上的所有列。 所以很简单:
select * from users, Posts, articles
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.