1 作为欲选取列的子查询
select mc.first_name,mc.last_name
( select state
from zip_code
where mc.zip_code=zip_code)as state
from my_contacts mc;
如果子查询放在select语句中,用于表示某个欲选取的列,则一次只能从一列返回一个值。
2 非关联子查询
如果子查询可以独立运行且不会引用外层查询的任何结果,即称为非关联子查询。
非关联子查询使用IN或NOT IN来检查子查询返回的值是否为集合的成员之一。
子查询与自然联接的搭配使用
natural join
3 关联子查询
内层查询的解析需要依赖外层查询的结果
1 exists与 not exists
select mc.first_name,mc.last_name
from my_contacts mc
where exists
(select * from contact_interest ci
where mc.contact_id=ci.contact_id);
返回my_contacts表中 数据,其中contacts_id曾出现在contact——interest表中。