设为首页 收藏本站
查看: 980|回复: 0

[经验分享] SQL 基础之使用子查询检索数据(二十二)

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-10-20 12:07:11 | 显示全部楼层 |阅读模式
  多列子查询
  where (manager_id, department_id) in
  子查询
  100 90
  102 60
  124 50
  主查询的每行都与多行和多列的子查询进行比较
  列的比较
  多列的比较,包含子查询可以是:
  不成对比较
  成对比较
  成对比较子查询
  1、显示与员工名为“John”同部门且同一个经理的其它员工信息
  select employee_id, manager_id, department_id from empl_demo
  where (manager_id, department_id) IN
  (select manager_id, department_id from empl_demo
  where first_name = 'John')
  AND first_name  'John';
  不成对比较
  1、显示名字不为 “John”员工的经理ID和部门ID的员工号、经理号、部门号
  select employee_id, manager_id, department_id
  from empl_demo
  where manager_id in
  (select manager_id
  from empl_demo
  where first_name = 'john')
  and department_id in
  (select department_id
  from empl_demo
  where first_name = 'john')
  and first_name  'john';
  标量子查询表达式
  标量子查询是从一行中返回一列的子查询
  标量子查询可在下列情况下使用:
  – DECODE 和 CASE 条件和表达式的一部分
  – SELECT 中除 GROUP BY 子句以外的所有子句中
  – UPDATE 语句的 SET 子句和 WHERE 子句
  CASE 表达式中的标量子查询:
  select employee_id, last_name, department_id,
  (case
  when department_id =
  (select department_id
  from departments
  where location_id = 1800)
  then 'canada' else 'usa' end) location
  from employees;
  ORDER BY 子句中的标量子查询:
  select employee_id, last_name,department_id
  from employees e
  order by (select department_name
  from departments d
  where e.department_id = d.department_id);
  相关子查询
  相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询
DSC0000.jpg

  子查询中使用主查询中的列
  select column1, column2, ...
  from table1 Outer_table
  where column1 operator
  (selecT column1, column2
  from table2
  where expr1 = Outer_table.expr2);
  2、查找所有的员工信息,谁的薪金超过其部门的平均工资
  select last_name, salary, department_id
  from employees outer_table
  where salary >
  (selecT AVG(salary)
  from employees inner_table
  where inner_table.department_id =
  outer_table.department_id);
  3、显示哪些员工工作变更过至少两次
  select e.employee_id, last_name,e.job_id from employees e
  where 2
  (select dept_avg
  from avg_cost)
  order by department_name;
  递归 WITH 子句
  递归WITH子句:
  Enables formulation of recursive queries.
  Creates query with a name, called the Recursive WITH element name
  Contains two types of query blocks member: anchor and a recursive
  Is ANSI-compatible
  with reachable_from (source, destin, totalflighttime) as
  (
  select source, destin, flight_time
  from flights
  union all
  select incoming.source, outgoing.destin,
  incoming.totalflighttime+outgoing.flight_time
  from reachable_from incoming, flights outgoing
  where incoming.destin = outgoing.source
  )
  select source, destin, totalflighttime
  from reachable_from;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624046-1-1.html 上篇帖子: SQL 基础之时区函数(二十一) 下篇帖子: SQL 基础正则表达式(二十三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表