寻求删除违规记录的 SQL 连接示例(行删除行清理 SQL 连接)
seeking SQL join example that removes offending records (row-removing row-cleansing SQL join)
有问题的 SQL 引擎是 SSMS (SQL Server Management Studio V18.5),尽管我怀疑该版本是否与此查询相关。
我有一个 table A,这是一个信息源。还有一个 table B,它是包含大约六个连接的复杂查询 X 的结果日志。工具处理该查询的输出以在外部工具中完成工作,然后将这些工作详细信息记录到 table C.
所以我们有:
- Table-A:数据源
- Complex-Query-X:多连接查询生成工作项列表(Table-A 是它的众多来源之一)
- Table-B:Complex-Query-X随时间变化的输出结果列表
- Table-C:Complex-Query-X 中已执行工作的工作项列表、完成的工作、工作的结果等
我试图创建的查询的目标是从上面的复杂查询中删除已经处理过的行(意味着它们出现在 Table-C 中)。此时的硬目标是减少工作,因为有数十万条记录正在处理,而我们只想处理一次记录,因此使用结果集来限制待办事项列表是一个明显的目标。
我不是 SQL 的新手,但我以前从未尝试过使用连接删除记录。大量在线参考资料涉及 SQL 联接、它们的方式和原因,但其中 none 详细说明了以我所见符合我们目标的方式删除数据。
我也想到我老了,我可能会遗漏一些明显的东西,我应该只 添加 数据到我的大连接查询,因此我在这里询问 (例如——所以它不需要删除)。那是我步履蹒跚的地方吗?
答案最终是一系列选项,我从中选择了第三个:
- 限制原始查询,因此 'data to remove' 在核心查询 运行 之后不存在——考虑到数据的组合方式(数十万行,大约七 (7) 个来源),但至少可以想象得到。
- 查询连接结构后期的左连接条件强制非匹配行上的空键标识符(使它们很容易被使用所述查询的工具忽略)
- 一个自动删除目标行的 where 子句——这是最简单的,并且至少在与其他两个查询选项的分析中表现相对较好——所以如上所述,这实际上是我们选择的方向以及left-join 原因这里不详述
我个人感谢大家的意见和批评,就像他们一样。我个人很抱歉没有更直接地了解实际来源和数据样本到底发生了什么,雇用我的机构对这类事情非常保密,当我有其他的时候我太忙/懒得捏造足够多的例子选项。
无论如何,这种类型的问题确实更具学术性,不需要具体的例子,而且我是说,如果我处于 reader 的位置,我自己实际上更喜欢一个例子,如果我有选择的话。实际上,我确实为派对制定了一个快速的路线图,最终培养了我的最终选择,但即便如此,在 public 的背景下,我更愿意 post。
有问题的 SQL 引擎是 SSMS (SQL Server Management Studio V18.5),尽管我怀疑该版本是否与此查询相关。
我有一个 table A,这是一个信息源。还有一个 table B,它是包含大约六个连接的复杂查询 X 的结果日志。工具处理该查询的输出以在外部工具中完成工作,然后将这些工作详细信息记录到 table C.
所以我们有:
- Table-A:数据源
- Complex-Query-X:多连接查询生成工作项列表(Table-A 是它的众多来源之一)
- Table-B:Complex-Query-X随时间变化的输出结果列表
- Table-C:Complex-Query-X 中已执行工作的工作项列表、完成的工作、工作的结果等
我试图创建的查询的目标是从上面的复杂查询中删除已经处理过的行(意味着它们出现在 Table-C 中)。此时的硬目标是减少工作,因为有数十万条记录正在处理,而我们只想处理一次记录,因此使用结果集来限制待办事项列表是一个明显的目标。
我不是 SQL 的新手,但我以前从未尝试过使用连接删除记录。大量在线参考资料涉及 SQL 联接、它们的方式和原因,但其中 none 详细说明了以我所见符合我们目标的方式删除数据。
我也想到我老了,我可能会遗漏一些明显的东西,我应该只 添加 数据到我的大连接查询,因此我在这里询问 (例如——所以它不需要删除)。那是我步履蹒跚的地方吗?
答案最终是一系列选项,我从中选择了第三个:
- 限制原始查询,因此 'data to remove' 在核心查询 运行 之后不存在——考虑到数据的组合方式(数十万行,大约七 (7) 个来源),但至少可以想象得到。
- 查询连接结构后期的左连接条件强制非匹配行上的空键标识符(使它们很容易被使用所述查询的工具忽略)
- 一个自动删除目标行的 where 子句——这是最简单的,并且至少在与其他两个查询选项的分析中表现相对较好——所以如上所述,这实际上是我们选择的方向以及left-join 原因这里不详述
我个人感谢大家的意见和批评,就像他们一样。我个人很抱歉没有更直接地了解实际来源和数据样本到底发生了什么,雇用我的机构对这类事情非常保密,当我有其他的时候我太忙/懒得捏造足够多的例子选项。
无论如何,这种类型的问题确实更具学术性,不需要具体的例子,而且我是说,如果我处于 reader 的位置,我自己实际上更喜欢一个例子,如果我有选择的话。实际上,我确实为派对制定了一个快速的路线图,最终培养了我的最终选择,但即便如此,在 public 的背景下,我更愿意 post。