我需要在SQL Server中进行查询以组合如下表:
TBL1
ID TITLE1
-----------
1 t1
2 t2
3 t3
TBL2
ID TITLE2
------------
100 c1
200 c2
现在我需要使用tbl3:
TBL3
col1 col2
-----------
t1 c1
t1 c2
t2 c1
t2 c2
t3 c1
t3 c2
如何在这两个表之间没有任何键的情况下获得tbl3
?
答案 0 :(得分:3)
您正在寻找交叉连接:
SELECT
t1.TITLE1 AS col1,
t2.TITLE2 AS col2
FROM TBL1 t1
CROSS JOIN TBL2 t2
ORDER BY
t1.TITLE1,
t2.TITLE2;
答案 1 :(得分:0)
您可以尝试
CREATE TABLE #Table1
([ID] int, [TITLE1] varchar(2))
INSERT INTO #Table1
VALUES
(1, 't1'),
(2, 't2'),
(3, 't3')
CREATE TABLE #Table2
([ID] int, [TITLE2] varchar(2))
INSERT INTO #Table2
VALUES
(100, 'c1'),
(200, 'c2')
SELECT Title1 as col1, Title2 as col2
FROM #Table1
CROSS JOIN #Table2 order by Title1
DROP TABLE #Table1
DROP TABLE #Table2
这是下面显示的输出。
col1 col2
t1 c1
t1 c2
t2 c2
t2 c1
t3 c1
t3 c2
答案 2 :(得分:0)
CROSS JOIN将适合您的情况。
结果集包含第一个表中的行数,如果没有WHERE子句,则乘以第二个表中的行数。
/ ************************************** /
选择
a.TITLE1 AS col1,
b.TITLE2 AS col2
从
TBL1 a
交叉加入
TBL2 b
/ ************************************** /