create table College(cName varchar(100), state varchar(100), enrollment int);
insert into College values ('Stanford', 'CA', 15000);
insert into College values ('Berkeley', 'CA', 36000);
insert into College values ('MIT', 'MA', 10000);
insert into College values ('Cornell', 'NY', 21000);
select cName
from College S1
where enrollment <= any (select enrollment
from College S2
where S2.cName <> S1.cName)
select cName
from College S1
where enrollment < any (select enrollment
from College S2
where S2.cName <> S1.cName)

这两个查询返回相同的东西,我不明白为什么。第一个查询也不返回Berkeley,但不是Berkeley <= Berkeley。
发布于 2021-01-27 09:46:06
您没有通过执行where S2.cName <> S1.cName来比较匹配cNames的注册值
忽略此条件以查看差异:
select cName
from College S1
where enrollment <= any (select enrollment from College S2)
select cName
from College S1
where enrollment < any (select enrollment from College S2)发布于 2021-01-27 09:55:02
因为在伯克利没有一个值为<= 36000(对应的注册值),即36000<=(15000,10000,21000),它不会返回任何值
https://stackoverflow.com/questions/65910269
复制相似问题