在SQL Server中查询以合并表

时间:2018-12-12 06:06:20

标签: sql-server

我需要在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

3 个答案:

答案 0 :(得分:3)

您正在寻找交叉连接:

SELECT
    t1.TITLE1 AS col1,
    t2.TITLE2 AS col2
FROM TBL1 t1
CROSS JOIN TBL2 t2
ORDER BY
    t1.TITLE1,
    t2.TITLE2;

enter image description here

Demo

答案 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

/ ************************************** /