美文网首页
java_sql子查询

java_sql子查询

作者: 走停2015_iOS开发 | 来源:发表于2021-01-15 16:01 被阅读0次
  • 子查询:select语句里面嵌套select语句

  • 子查询出现的问题:select ..(select).from..(select).where..(select).这三个位置

  • where子句中使用子查询

//找出高于平均薪资的员工信息
select *form t_user where sal>avg(sal);  错误写法 
where后面不能加分组函数

//第一步:找出平均薪资
select avg(sal) from t_user;
+----------+
| avg(sal) |
+----------+
| 2099.375 |
+----------+
//第二步:where过滤
select *from t_user where sal > 2099.375;
+----+--------+-----+--------+---------+------+--------+------+------+------+
| id | name   | age | gender | content | job  | deptno | sal  | mgr  | num  |
+----+--------+-----+--------+---------+------+--------+------+------+------+
|  5 | WeiHua |  32 |      0 | NULL    | BBB  |      5 | 4321 |  100 |  103 |
|  7 | Ann    |  36 |      0 | NULL    | DDDD |      5 | 2131 |  104 |  105 |
|  8 | Lisa   |  19 |      0 | ceshi   | DDDD |      1 | 4345 |  105 |  106 |
| 10 | Ka_te  |  17 |      1 | NULL    | FFF  |      1 | 2433 |  110 |  108 |
+----+--------+-----+--------+---------+------+------
// 第一步和第二步合并
select *from t_user where sal >(select avg(sal) from t_user);
  • from 后面嵌套子查询
//找出每个部门平均薪水的薪资等级

1.找出每个部门的平均薪水
select deptno,avg(sal) as avgsal from t_user group by deptno;
+--------+--------------------+
| deptno | avgsal             |
+--------+--------------------+
|      2 |              656.5 |
|      5 | 2567.3333333333335 |
|      4 |               1002 |
|      1 |               3389 |
+--------+--------------------+
2.将以上的查询结果当做临时表t ,让t表和salgrade表连接 条件是平均工资在salgrade表俩个字段之间

select t.* , s.gread from (select deptno,avg(sal) as avgsal from t_user group by deptno) t  join salgrade s on t.avgsal between s.losal and s.hisal;
+--------+--------------------+-------+
| deptno | avgsal             | gread |
+--------+--------------------+-------+
|      2 |              656.5 | 1     |
|      5 | 2567.3333333333335 | 4     |
|      4 |               1002 | 1     |
|      1 |               3389 | 5     |
+--------+--------------------+-------+
  • 在select后面嵌套子查询
//找出每个员工所在的部门名称 要求显示员工名和部门名
除了俩表关联查询之外 换一种方式查询

 select e.name,(select d.dname from dept d where e.deptno = d.deptno) as dname from t_user e;
+-----------+-----------+
| name      | dname     |
+-----------+-----------+
| HanMeimei | 测试部    |
| Lucy      | 采购部    |
| WeiHua    | 采购部    |
| ZhangWei  | 设计部    |
| Ann       | 采购部    |
| Lisa      | 市场部    |
| ZWei      | 测试部    |
| Ka_te     | 市场部    |
+-----------+-----------+
8 rows in set (0.00 sec)


相关文章

  • java_sql子查询

    子查询:select语句里面嵌套select语句 子查询出现的问题:select ..(select).from....

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 数据库第七天

    子查询 查询里面还有查询注意: 子查询优先于主查询执行 最好子查询用括号 查询比ALLEN工资高的员工信息 单行子...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • 17/12/6 子查询

    17/12/6 子查询 单行子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询的执行。 子查询可以嵌入1.w...

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • 数据分析之SQL子查询

    文章阅读路线: SQL子查询概念 独立子查询实例 相关子查询实例 SQL子查询常见玩伴 1.SQL子查询概念 子查...

网友评论

      本文标题:java_sql子查询

      本文链接:https://www.haomeiwen.com/subject/nvkwaktx.html