查找sql联接示例,用于删除有问题的记录(行删除行清理sql联接)

dsf9zpds  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(451)

所讨论的sql引擎是ssms(sqlservermanagementstudiov18.5),尽管我怀疑这个版本是否与此查询相关。
我有一个表a是一个信息源。还有一个表b,它是一个复杂查询x的结果日志,其中包含大约六个连接。工具处理该查询的输出以在外部工具中完成工作,然后将这些工作细节记录到表c中。
所以我们有:
表a:数据源
complex-query-x:产生工作项列表的多连接查询(表a是它的许多来源之一)
表b:complex-query-x随时间的输出结果列表
表c:complex-query-x中的工作项列表,这些工作项上执行了工作、完成的工作、该工作的结果等
我要创建的查询的目标是,如果行已经被处理过(也就是说它们出现在表c中),就从上面的复杂查询中删除它们。此时的硬目标是减少工作量,因为有成千上万条记录正在被处理,而我们只希望处理一次记录,因此使用结果集来限制待办工作列表是一个明显的目标。
我对sql并不陌生,但我以前从未尝试过用连接来删除记录。网上有大量的参考资料涉及sql连接,以及它们的方式和原因,但没有一个详细说明如何以符合我们目标的方式删除数据。
我还想到,我年纪大了,可能遗漏了一些明显的东西,我应该只在我的大连接查询中添加数据,因此我在这里进行查询(例如--这样就不需要删除)。那是我支支吾吾的地方吗?

z9zf31ra

z9zf31ra1#

答案最终是一组选项,我从中选择了第三个:
限制原始查询,使“要删除的数据”在核心查询运行后不出现——考虑到数据的组合方式(数十万行,大约七(7)个源),该选项有点复杂,但至少是可以想象的。
查询联接结构中的一个左联接条件,它在不匹配的行上强制使用空键标识符(使使用所述查询的工具容易忽略它们)
自动删除目标行的where子句——这是最简单的,而且至少在分析中与其他两个查询选项的性能相对较好——所以如上所述,这实际上是我们选择的方向,还有一个左连接,原因在这里将不详细说明
我个人感谢大家的意见和批评,就像他们所做的那样。就我个人而言,我很抱歉没有对真实的数据源和数据样本的确切情况更坦率,雇用我的机构对这类事情相当保密,我太忙/懒得在我有其他选择的时候捏造足够的例子。
不管怎样,这种类型的问题实际上更具学术性,不需要硬性的例子,我的意思是,如果我站在读者的立场上,如果我有选择的话,我自己会更喜欢一个例子。事实上,我确实为最终培养我最终选择的政党起草了一份简短的路线图,但即便如此,这也比我更愿意在公共场合发布的内容要多。

相关问题