【发布时间】:2020-10-30 10:52:34
【问题描述】:
有问题的 SQL 引擎是 SSMS (SQL Server Management Studio V18.5),尽管我怀疑该版本是否与此查询相关。
我有一个表 A,它是一个信息源。还有一个表 B,它是包含大约六个连接的复杂查询 X 的结果日志。工具处理该查询的输出以在外部工具中完成工作,然后将这些工作详细信息记录到表 C。
所以我们有:
- 表-A:数据源
- Complex-Query-X:产生工作项列表的多连接查询(Table-A 是它的众多来源之一)
- 表-B:Complex-Query-X 随时间推移的输出结果列表
- Table-C:Complex-Query-X 中的工作项列表,这些工作项在其上执行了工作量、完成的工作、工作的结果等
我试图创建的查询的目标是从上面的复杂查询中删除已经处理过的行(意味着它们出现在 Table-C 中)。此时的硬目标是减少工作量,因为有数十万条记录正在处理,而我们只想处理一次记录,因此使用结果集来限制待办事项列表是一个明显的目标。
我对 SQL 并不陌生,但我以前从未尝试过使用连接来删除记录。网上有大量参考资料涉及 SQL 连接、它们的方法和原因,但没有一个详细说明删除数据的方式符合我们的目标。
我还想到我老了,我可能会遗漏一些明显的东西,我应该只添加数据到我的大连接查询中,因此我在这里查询(例如——所以它不需要删除)。那是我动摇的地方吗?
【问题讨论】:
-
你能添加一些示例数据吗?
-
您是否考虑过在 WHERE 子句中使用 NOT EXISTS({ 表 C 中的匹配条件 } )?
-
对不起,JH 我不被允许。谢谢 CE,您的反馈肯定培养了我们的最终选择和最终选择。
-
请参阅How do comment @replies work? 以学习使用@x 通知一位非唯一非发布者评论者x 重新发表评论。
标签: sql sql-server left-join inner-join record