我追求的场景是:
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)
}
}
假设我有以下三个表。
IdName表 1,优先级 1
1 John
2 Mary
3 Elsa
IdName表 2,优先级 2
2 Steve
3 Max
4 Peter
IdName表 3,优先级 3
4 Frank
5 Harry
6 Mona
这是我需要的最终结果。
IdName结果
1 John
2 Mary
3 Elsa
4 Peter
5 Harry
6 Mona
一些提示要记住。
实际表数为 10。
每个表的行数超过 100 万。
没有必要在查询中使用连接,但由于我正在处理查询的数据量必须优化并在 SQL 中使用集合操作而不是游标脚本。