sql - SQL Server - 如何最有效地检查结果集中的重复项
问题描述
我正在编写一个存储过程,它或多或少在表上运行“SELECT ... FROM ... WHERE”语句我想将查询结果返回给用户,但要检查结果中是否有任何重复的查询。如果有,我想抛出一个错误。否则,应返回结果集。
总而言之,代码应该:
- 从表中选择
- 检查该 SELECT 查询结果中的重复项,如果发现任何重复项,则抛出错误。
- 如果没有找到,则返回结果集。
我目前的想法是我需要做类似的事情:
- 在相关列上创建具有唯一约束的表变量
- 从“SELECT ... FROM ... WHERE”插入表变量
- 如果有重复,将违反约束,我将在 catch 子句中处理它
- 如果没有重复,我的代码将继续并 'SELECT * FROM @TableVariable'
一个可能的替代方案可能是 CTE,但我不确定。
我的问题是这是否是解决这个问题的正确方法。
子问题:
- 有没有更好的方法来做到这一点?
- 由于某种原因,上述方法会不起作用吗?
- 由于我执行了两次 SELECT 操作,我的查询是否可能会显着减慢?或者 Table 变量是否以这样的方式存储,使得执行第二个 SELECT 不会“花费”太多?
解决方案
推荐阅读
- amazon-web-services - 无法连接到服务器:拨打 tcp 10.0.12.77:443: i/o timeout
- flutter - 定时器不会取消 - Flutter Provider
- mongoengine - 如何自动取消引用 ListField 中的所有 ReferenceField?
- sql - 我想使用 CASE 和 WHEN 创建一个 SQL 新列
- r - 根据与向量的匹配来改变列
- python - PostgreSQL - 更新没有时区的日期时间
- javascript - 在类方法中使用箭头函数访问类属性
- c# - 'ImageConverter' 类型存在于两者中
- c++ - (UE4) 移动的球在几何“连接”的地方意外跳跃。我该如何解决?
- php - 如何根据国家/地区隐藏 WooCommerce 结帐时的状态字段