子查询

原创 2015年11月21日 15:14:36

不相关子查询:

--子查询先执行,然后再执行外部查询。外部查询会使用到子查询的

--返回值。

 

--查询挣得的比亚伯多的雇员的姓名和薪水

select last_name,salary

  from employees

  where salary > (select salary

                   from employees

                   where last_name='Abel');

 

 

 

--子查询可以放在比较操作符的左边,但是这样写可读性很差

select last_name,salary

  from employees

  where (select salary

                   from employees

                   where last_name='Abel') < salary;

 

--单行子查询:

--子查询返回单行单列一个值

 

--多行子查询:

--子查询返回多行单列多个值

 

--对于单行子查询的返回值,在外部查询要使用单行比较操作符

--进行比较:=、>,<,<=,>=

 

--查找和Chen干同样的工作,但是挣得比Chen多的雇员的信息

select last_name,job_id,salary

  from employees

  where job_id = (select job_id

                   from employees

                   where last_name='Chen')

    and salary > (select salary

                   from employees

                   where last_name='Chen');

 

--子查询中也可以用组函数

--本例显示了月薪等于最低月薪的雇员的姓名、工作编号和月薪

select last_name,job_id,salary

  from employees

  where salary = (select min(salary)

                   from employees);

 

--注意,如果子查询返回的结果集为空,那么会把null值带入到

--外部查询中,这可能会导致外部查询的结果集也为空

select last_name,salary

  from employees

   where job_id = (select job_id

                    from employees

                    where last_name='Haas');

 

 

--对于多行子查询,在外部查询中要比较这些值,必须

--使用多行比较操作符:3个:in  any  all

--其中,any all不能单独用,在其前面必须加上单行比较操作符。

--例如:<any  >any=any <all >all等

 

 

--本例显示了工作不是IT程序员,

--并且工资少于任何一个程序员的雇员的信息

select last_name,salary

  from employees

  where salary <any (select salary

                   from employees

                   where job_id='IT_PROG')

  and job_id <> 'IT_PROG';

 

 

--本例显示了工作不是IT程序员,

--并且工资少于所有程序员的雇员的信息

select last_name,salary

  from employees

  where salary <all (select salary

                   from employees

                   where job_id='IT_PROG')

  and job_id <> 'IT_PROG';

 

--当外部查询的where条件使用not in 操作符时,要特别

--注意:如果子查询的返回值中有一个null值,会导致

--外部查询的where条件也为null,从而外查询的结果集为空

 

--查询所有普通雇员(没有当官的)的姓名

select last_name

  from employees

  where employee_id not in (selectmanager_id

                             from employees);

 

--解决办法:排除子查询结果集中的null值

select last_name

  from employees

  where employee_id not in (selectmanager_id

                             from employees

                             where manager_idis not null);

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

用MongoDB做子查询

MongoDB不支持子查询,碰到这些复杂的运算就只能先将数据读出后再计算,而用Java等语言编写这类计算也不是很简单,这时可以考虑用esProc辅助实现。下面我们通过一个例子来看一下具体做法。 ...
  • u012388497
  • u012388497
  • 2015年12月25日 17:40
  • 2393

视图和子查询

笔记中用到的表在这里。 视图 视图:视图可以理解成一张表。但它不保存在计算机的存储设备中,也不保存数据到任何地方,事实上,他保存的是select语句。 语法创建语法:create view vie...
  • AsuraDong
  • AsuraDong
  • 2017年07月26日 18:30
  • 419

in型子查询陷阱

in 型子查询引出的陷阱 题: 在ecshop商城表中,查询6号栏目的商品, (注,6号是一个大栏目) 最直观的: mysql> select goods_id,cat_id,goods_...
  • freedomai
  • freedomai
  • 2015年04月19日 18:10
  • 1211

高级sql学习——相关子查询和非相关子查询!!!

子查询:嵌套在其他查询中的查询称之。子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。所有的子查询可以分为两类,即相关子查询和非相关子查询 1>非相关子查询是独立于外部查询的子查询,子查询...
  • zq9017197
  • zq9017197
  • 2010年10月14日 15:26
  • 4329

连接查询与子查询

连接查询 连接查询是将两个或多个的表按某个条件连接起来,从中选取需要的数据,连接查询是同时查询两个或两个以上的表的使用的。当不同的表中存在相同意义的字段时,可以通过该字段来连接这几个表。    ...
  • huyr_123
  • huyr_123
  • 2017年03月12日 13:34
  • 1366

关联子查询+嵌套子查询

关联子查询 定义 1引用外部的一列或多列 2将外部查询的每一行都传递给子查询,子查询依次读取传递过来的每一行的值,并将其使用到子查询上,直到外部查询的所有行都处理完为止,然后返回子查询的结果获取...
  • zhou920786312
  • zhou920786312
  • 2017年05月21日 17:06
  • 1045

相关子查询&非相关子查询概念

子查询:嵌套在其它查询中的查询语句。(又称为内部查询)主查询:包含其它子查询的查询称为主查询。(又称外部查询) 子查询分为两类:相关子查询非相关子查询在主查询中,每查询一条记录,需要重新做一次子查询,...
  • sTeVes
  • sTeVes
  • 2010年01月19日 14:17
  • 7612

mysql查询语句select-子查询

1 子查询定义     在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询...
  • JesseYoung
  • JesseYoung
  • 2014年10月15日 11:41
  • 19274

MySQL IN子查询

近日通过《mysql技术内幕:SQL编程》学习mysql子查询,书中介绍了IN子查询存在的问题,并且提供了一些优化方法。我在此书的基础上进行了深入研究,总结几点。 MySql优化器对IN子查询优化时...
  • guangzixin
  • guangzixin
  • 2012年11月20日 17:18
  • 991

利用子查询一次性 insert 多条数据

insert into emp_wang(id,name,deptno) select empno,ename,deptno from emp where deptno=10;
  • confirmAname
  • confirmAname
  • 2013年07月22日 00:31
  • 982
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:子查询
举报原因:
原因补充:

(最多只允许输入30个字)