刷新我的记忆。我不记得如何加入元组(a,b)和(c)来产生(a,b)*(c)。例如:
n
---
0
1
2
并且
site_id value
----------- -------------
1 a
1 b
2 c
我想结束:
site_id value n
----------- -------------- --
1 a 0
1 a 1
1 a 2
1 b 0
1 b 1
1 b 2
2 c 0
2 c 1
2 c 2
我怎样才能做到这一点?
答案 0 :(得分:2)
这称为CROSS JOIN,也称为笛卡尔积。
SELECT *
FROM Table1
CROSS JOIN Table2
你也可以在没有JOIN关键字的情况下使用逗号:
SELECT * FROM Table1, Table2
以下是可用于验证其是否有效的完整测试代码:
CREATE TABLE Table1 (n int NOT NULL);
INSERT INTO Table1 (n) VALUES
(0),
(1),
(2);
CREATE TABLE Table2 (site_id int NOT NULL, value nvarchar(100) NOT NULL);
INSERT INTO Table2 (site_id, value) VALUES
(1, 'a'),
(1, 'b'),
(2, 'c');
SELECT Table2.site_id, Table2.value, Table1.n FROM Table1, Table2
结果:
site_id value n
1 a 0
1 a 1
1 a 2
1 b 0
1 b 1
1 b 2
2 c 0
2 c 1
2 c 2
答案 1 :(得分:1)
做一个CROSS JOIN
答案 2 :(得分:1)
你可以尝试
Select *
FROM table1, table2