在下面的示例查询中,我在#txn中有3个ID,而其中一个ID不在#lkp中。
当我离开包含#lkp过滤器的联接以排除某些grp值时,其中一条记录被删除。我期望的输出是即使#txn中的所有记录与#lkp中的任何记录都不匹配,仍将其保留在我的#txn中。
这是所有SQL(MS SQL,MYSQL等)的标准行为吗?
drop table if exists #txn;
create table #txn(
id int,
var1 int
);
drop table if exists #lkp;
create table #lkp(
id int,
grp int
);
insert into #txn values (101,123);
insert into #txn values (102,456);
insert into #txn values (103,789);
insert into #lkp values (101,0);
insert into #lkp values (103,1);
select
a.id,
a.var1
from #txn a
left join #lkp b on (a.id = b.id)
where b.grp not in(10,20)
;