【发布时间】:2020-01-23 10:33:09
【问题描述】:
我有两张表要合并。它们每个都包含相同的行数,我希望我的结果具有相同的行数,但两者的列数相同。表 A 中的哪一行与表 B 中的哪一行匹配并不重要。原因是我正在编写的查询将链接这些行,所以目前它们之间没有链接。
我目前的方法(下面的 SQL)是从带有行号的每个表中选择数据,然后根据该行号连接表。这给出了我想要的结果,但是有没有更简单的方法呢?
SELECT IdA, IdB
FROM (
SELECT IdA, ROW_NUMBER() OVER(ORDER BY IdA) RowNum
FROM TableA
) a
JOIN (
SELECT IdB, ROW_NUMBER() OVER(ORDER BY IdB) RowNum
FROM TableB
) b
ON a.RowNum = b.RowNum;
【问题讨论】:
-
如果你设法得到结果,为什么要质疑它?在性能方面是不是太贵了?
-
“更容易”是一个相对术语。
-
写起来很麻烦,因为我不得不写很多次。感觉像是某种可能有标准方法的东西(类似于连接的东西),所以我想检查一下我没有遗漏任何东西。
-
@Tim - 你所说的“[...] 我不得不做很多次”是什么意思?
-
我的意思是写了好几遍。这是一个更大的 SQL 工作的一小部分,并且这个需求不断出现不同的数据集。我从这些 cmets 中得到的印象是,我没有明显的替代方案,这很好。但是,如果我可以做一些更简单的事情(例如 TableA COLUMNJOIN TableB),那么它会节省我编写不必要的冗长 SQL 的工作。
标签: sql-server