首页 > 解决方案 > SQL Server - 如何最有效地检查结果集中的重复项

问题描述

我正在编写一个存储过程,它或多或少在表上运行“SELECT ... FROM ... WHERE”语句我想将查询结果返回给用户,但要检查结果中是否有任何重复的查询。如果有,我想抛出一个错误。否则,应返回结果集。

总而言之,代码应该:

  1. 从表中选择
  2. 检查该 SELECT 查询结果中的重复项,如果发现任何重复项,则抛出错误。
  3. 如果没有找到,则返回结果集。

我目前的想法是我需要做类似的事情:

  1. 在相关列上创建具有唯一约束的表变量
  2. 从“SELECT ... FROM ... WHERE”插入表变量
  3. 如果有重复,将违反约束,我将在 catch 子句中处理它
  4. 如果没有重复,我的代码将继续并 'SELECT * FROM @TableVariable'

一个可能的替代方案可能是 CTE,但我不确定。

我的问题是这是否是解决这个问题的正确方法。

子问题:

  1. 有没有更好的方法来做到这一点?
  2. 由于某种原因,上述方法会不起作用吗?
  3. 由于我执行了两次 SELECT 操作,我的查询是否可能会显着减慢?或者 Table 变量是否以这样的方式存储,使得执行第二个 SELECT 不会“花费”太多?

标签: sqlsql-serverduplicates

解决方案


推荐阅读