从多个表中选择数据而不加入sql

时间:2018-04-30 07:09:05

标签: sql-server-2012

我有2个SQL表。表A和表B.这两个表分别有10000条记录。

表A中有3列=>

ColumnA,ColumnB,ColumnC

表B中有3列=>

ColumnD,ColumnE,ColumnF

我的要求是选择ColumnA和ColumnD及其原始记录(10000)。

我的问题是如何只选择ColumnA和ColumnD。

第一个问题是我无法加入这两个表,因为这两个表是分开的。

第二个问题是我不能联合这两个表,因为我的要求是获得两列,但是当我结合时,我只得到一个列合并两列。

1 个答案:

答案 0 :(得分:1)

您可以通过ROW_NUMBER创建动态加入列,然后加入:

WITH cte1 AS (
    SELECT ColumnA, ROW_NUMBER() OVER (ORDER BY ColumnA) rn
    FROM TableA
),
cte2 AS (
    SELECT ColumnD, ROW_NUMBER() OVER (ORDER BY ColumnD) rn
    FROM TableB
)

SELECT t1.ColumnA, t2.ColumnD
FROM cte t1
INNER JOIN cte t2
    ON t1.rn = t2.rn;

当然,这只会使用A和D列中的任意顺序对10K记录进行配对。如果您对这两列的配对方式有一些具体的逻辑,请告诉我们。最重要的是,你不能轻易摆脱连接或联合的概念,将这两个列组合在一起。