sql - 将表与 SQL Server 2005 中存储过程中的表变量进行比较

标签 sql sql-server sql-server-2005

如何将表与存储过程中的表变量进行比较?通常我们使用这个查询来比较两个表:

 SELECT * 
 FROM Table A 
 WHERE NOT EXISTS(SELECT * 
                  FROM Table B 
                  WHERE Table A.ID = Table B.ID)

但是在这里,我有表A和一个表变量@Item,就像表B。

在这种场景下,如何比较Table A@Item

我正在编写一个存储过程,在该存储过程中,我想将现有的一个表与从前端生成并作为 XML 数据集传递给存储过程的表变量进行比较... 这样,如果表变量@Item 中的所有行都出现在现有表中,则它返回 true 否则返回 false...

有什么建议....

最佳答案

在排除一个表的结果时,我总是更喜欢左连接语法:

select a.*
from [table] a
    left outer join @item b
        on a.ID = b.ID
where b.ID is null 

我怀疑查询计划应该是一样的。

关于sql - 将表与 SQL Server 2005 中存储过程中的表变量进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202049/

相关文章:

c# - Windows 服务与简单程序

c# - sql 在一个字符串匹配上连接两个表

sql - 根据自动增量列插入列值

sql-server - 将SSRS中的多个值参数传递给存储过程

sql-server-2005 - 在sqlserver2005中使用单个查询一次从多个表中删除记录

mysql - SQL Server 2012 链接服务器到 MySQL 慢速选择查询

SQL - 按给定列中值的变化进行分组

sql - 将付款应用于账单的基于集合的方法

sql - SQL Server 2005-如何为数据库一次备份创建新的备份集

sql - 分别计算每列的不同值