丢弃存储过程SQL Server上的特定结果

时间:2018-10-05 22:40:46

标签: sql-server stored-procedures

假设我有一个存储过程,该存储过程返回了两个表A和B中的所有数据。

表_A

Id    Name
-----------------
 1    Chuck
 2    Richard
 3    Arthur

表B

Status   Nickname    IdTableA
-----------------------------
   1     cthulhu        1
   2     Poe            3

查询:

SELECT
    a.Name, b.Status, b.Nickname
FROM 
    Table_A a
LEFT JOIN
    Table_B b ON b.IdTableA = a.Id

如果我现在运行存储过程,即使它们在table_B中没有记录,它也会返回所有记录(如您所见,table_A中的记录编号2尚不存在-也许明天,或者在一个月...-)。我需要做的是丢弃状态号2(位于表B中)。当我使用类似的东西时会发生问题:

where b.Status = 1

where b.Status <> 2

为什么?因为它只返回状态为1的值,所以我只需要丢弃状态为2的记录,还可以返回table_A中的记录,而table_B上没有记录。

有办法做到吗?

希望您能帮助我。预先感谢。

1 个答案:

答案 0 :(得分:1)

以下屏幕截图是否满足您的要求?

enter image description here

尝试以下操作:

declare @table_a table (id int, name varchar(100))
insert into @table_a select 1, 'Chuck'
union select 2, 'Richard'
union select 3, 'Arthur'

declare @table_b table (status int, nickname varchar(100), id_table_a int)
insert into @table_b
select 1, 'cthulhu', 1
union select 2, 'Poe', 3

select * from @table_a
select * from @table_b

select *
from @table_a a
left join @table_b b on a.id = b.id_table_a
where isnull(status,'') <> 2