我有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.
....
以这种方式
答案 0 :(得分:4)
在三个表之间进行交叉连接,在MySQL中可以通过执行INNER JOIN
而没有ON
限制来实现。
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,则可以将INNER JOIN
替换为CROSS JOIN
以获得相同的结果。
如果tmp_all_combinations
尚不存在,您可以创建它,确保列与三个源表具有相同的类型。
答案 1 :(得分:1)
ANSI-SQL解决此问题的方法是使用cross join
:
INSERT INTO tmp_all_combinations
SELECT table1.name, table2.title, table3.title
FROM table1
CROSS JOIN table2
CROSS JOIN table3
答案 2 :(得分:0)
基本上你需要的是一个没有任何列可以加入的连接,所以它将是所有列上的所有列。所以它只是:
select * from users, Posts, articles