我有一张桌子,上面有这个人知道的人和语言。例如
Name Language
John Engl ish
Bill English
John German
Bill Japanese
Li Chinese
我想选择所有懂英语和德语的人。简单的方法是这样做:
select name from persons p where
exists (select 1
from persons pp
where pp.name=p.name
and pp.language="English")
AND
exists (select 1 from persons pp
where pp.name=p.name
and pp.language="English")
请求的复杂度为 n^2;但是,如果我需要选择所有懂英语、德语和俄语的人怎么办?我将有 n^3 的复杂度。等等..有没有更快的方法呢?