我有2个SQL表。表A和表B.这两个表分别有10000条记录。
表A中有3列=>
ColumnA,ColumnB,ColumnC
表B中有3列=>
ColumnD,ColumnE,ColumnF
我的要求是选择ColumnA和ColumnD及其原始记录(10000)。
我的问题是如何只选择ColumnA和ColumnD。
第一个问题是我无法加入这两个表,因为这两个表是分开的。
第二个问题是我不能联合这两个表,因为我的要求是获得两列,但是当我结合时,我只得到一个列合并两列。
答案 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记录进行配对。如果您对这两列的配对方式有一些具体的逻辑,请告诉我们。最重要的是,你不能轻易摆脱连接或联合的概念,将这两个列组合在一起。