我想要一个查询,在其最简单的情况下将连接2个表格,除了每行之外没有其他表达关系,我将称之为“池”表格与我另一张桌子中的恰好一排相匹配。我不关心哪一行,我只是希望主表中的每一行都从“池”表中获取一行,并知道池中的每一行只能使用一次。通过将其连接到另一个表中使用每一行
我想这样ROW_NUMBER()OVER()可以用来匹配上会被罚款的任意行号,但我认为至少需要2级内部行集的提供者;我认为会有些简单的事情。
为了更简洁地把这个问题了一下,你有ID的表,你想它加入到记录表来分配的ID。你只能使用每个id一次。您可以使用哪种查询结构或连接来返回分配给ID的所有记录的行集。记录得到什么ID并不重要,只是每个ID只能使用一次。
背景
对于那些你感兴趣的背景,我有什么是它是由一个头表头行的一个逻辑实体,它是通用的,以大量的对象这给我们的ID,然后是实体特定表中的记录。我使用类似下面的查询预生成一串的ID在头表:
declare @idsTable TABLE(ID INT);
INSERT INTO Header (HeaderType)
OUTPUT INSERTED.id INTO @idsTable
SELECT 4 as HeaderType
FROM Company c WHERE c.CompanyType = 12;
在这一点上我有一大堆的标题行和已分配给该行的ID(身份)的。现在,我想用类似的插入对象特定表,但我需要从@idsTable的ID在我的选择查询(因此我的插入查询)匹配到只有1行。喜欢的东西:
INSERT INTO Specific (HeaderiD, Value1, ...)
SELECT *
FROM @idsTable
JOIN RecordsToWrite r2r ON ???
我没有放弃,我只是认为它不是特别易读,并且会有些简单的事情。顺便说一句,这正是row_number解决方案的意思。 – 2009-09-18 21:45:59