sql子查询

来源:百度知道 编辑:UC知道 时间:2024/05/14 03:35:10
例:查询谁跟 Smith 的工种一样,去掉 Smith 本人。
select first_name,title
from s_emp
where title=any(
select title
from s_emp
where last_name='Smith')
and upper(last_name)!='SMITH';
请给我讲解一下此意义,越详细越好谢谢。

从s_emp表查询出的结果集有first_name,title两列数据,条件是title等于查询select title
from s_emp
where last_name='Smith'结果集的数据,并且last_name字段转换为大写字母形式等于SMITH.
--any:用标量值与单列集中的值进行比较。
--upper:大小写转换。
--and:逻辑或且非中的且。

select first_name,title
from s_emp ----------雇员表
where title=any( ----------选出工种为smith工种的人
select title
from s_emp
where last_name='Smith') ---------查出last_name是smith的人的工种
and upper(last_name)!='SMITH'; -------过滤掉smith 本人

ANY表示只要大于等于子查询结果集中任何一个即成立