对my last question的跟进。 请注意,这不是重复的,other question缺少了我拥有的WHERE
子句;)。
我认为我对同一件商品有两种变体,并进行了健全性检查。我的问题是-一个什么都不返回,而另一个返回我期望的值。我的问题是我不明白为什么-有人可以在这里帮助我吗?
一切都是SQLite3。
变种1:
select
z.license,
z.username
from
check_table as z
where
(
z.username not in (
select a.mail_username
from Address as a
)
)
order by
license, username;
变种2:
select
z.license,
z.username
from
check_table as z
where
(
not exists (
select 1
from Address as a
where z.username = a.mail_username
)
)
order by
license, username;
健全性检查:
select
z.username,
a.mail_username
from
check_table as z
left join Address as a
on z.username = a.mail_username
where
a.mail_username is null
order by
mail_username
结果:
我完全迷失了,因为NOT IN
在其他组合中也能正常工作,而我看不出有什么区别。
更新:好的,它是重复的:D。为了我的辩护-实际的原件名称非常简短;)