如何为 SQL 服务器中的多优先级条件连接编写优化查询?

How to write optimized query for multiple prioritize conditional joins in SQL server?

我追求的场景是:

Result = Nothing
CollectionOfTables = Tbl1, Tbl2, Tbl3
While(True){
  CurrentTable = GetHighestPriorityTable(CollectionOfTables)
  If(CurrentTable) = Nothing Then Break Loop;
  RemoveCurrentTableFrom(CollectionOfTables)
  ForEach ID in CurrentTable as TempRow {
    If(Result.DoesntContainsId(ID)) Then Result.AddRow(TempRow)
  }
}

假设我有以下三个 tables.
Id名称表 1,优先级 1
1 约翰
2 玛丽
3 艾尔莎

Id名称Table2,优先级 2
2 史蒂夫
3 最大
4 彼得

Id名称Table3,优先级 3
4 弗兰克
5 哈利
6 莫娜

这是我需要的最终结果。

Id名称结果
1 约翰
2 玛丽
3 艾尔莎
4 彼得
5 哈利
6 莫娜

一些要记住的提示。
实际 table 的数量是 10.
每个 table 的行数超过 100 万。
没有必要在查询中使用连接,但由于我正在处理的数据量很大,必须优化查询并在 SQL 而不是 Cursor 脚本中使用集合操作。

这是一种使用 UNIONROW_NUMBER() 的方法:

;With Cte As
(
    Select  Id, Name, 1 As Prio
    From    Table1
    Union All
    Select  Id, Name, 2 As Prio
    From    Table2
    Union All
    Select  Id, Name, 3 As Prio
    From    Table3
), Ranked As
(
    Select  Id, Name, Row_Number() Over (Partition By Id Order By Prio) As RN
    From    Cte
)
Select  Id, Name
From    Ranked
Where   RN = 1
Order By Id Asc;