首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL ---- SQL语句学习笔记三

MySQL ---- SQL语句学习笔记三

作者头像
Rattenking
发布2021-09-07 16:34:47
发布2021-09-07 16:34:47
1.6K0
举报
文章被收录于专栏:RattenkingRattenking

实例用表

  1. emp表

id

name

salary

depId

1

Joe

70000

1

2

Henry

80000

2

3

Sam

60000

2

4

Max

90000

1

代码语言:javascript
复制
CREATE TABLE emp(id INT,name char(255),salary int, depId int);

INSERT INTO emp VALUES(1,'Joe',70000,1),(2,'Henry',80000,2),(3,'Sam',60000,2),(4,'Max',90000,1);
  1. dep表

id

name

1

IT

2

Sales

代码语言:javascript
复制
CREATE TABLE dep(id INT,name char(255));

INSERT INTO dep VALUES(1,'IT'),(2,'Sales');

1.WHERE 里边的子查询

子查询如果在 where 或 select 中时,相当于【子查询】先计算结果再判断! “=” 的子查询返回必须唯一,否则就会报错! IN 的子查询可以返回一列的结果!

1.1 找出每个部门工资最高的员工!

代码语言:javascript
复制
SELECT
	dep. NAME AS '部门',
	p2. NAME AS '员工',
	p2.salary
FROM
	emp p2
JOIN dep ON dep.id = p2.depId
WHERE
	p2.salary IN (
		SELECT
			MAX(salary) AS salary
		FROM
			emp p1
		GROUP BY
			p1.depId
	)

2.SELECT 里边的子查询

子查询返回必须唯一!否则就会报错!

2.1 找出全部员工中工资最高的,添加max行!

代码语言:javascript
复制
SELECT
	dep. NAME,
	p2. NAME,
	p2.salary,
	(
		SELECT
			MAX(salary) AS salary
		FROM
			emp p1
	) AS max
FROM
	emp p2
JOIN dep ON dep.id = p2.depId

3.having 里边的子查询

不常见,基本不用!

4.ON 里边的子查询

不常见,基本不用!

5.FROM 里边的子查询

在 FROM 里边的子查询必须要有别名!

5.1 找出每个部门工资最高的员工!

代码语言:javascript
复制
SELECT
	dep. NAME AS '部门',
	p2. NAME AS '员工',
	p2.salary
FROM
	emp p2
JOIN dep ON dep.id = p2.depId
JOIN (
	SELECT
		MAX(salary) AS salary,
		depId
	FROM
		emp p1
	GROUP BY
		p1.depId
) p3 ON p2.depId = p3.depId
AND p2.salary = p3.salary

6.半连接查询

子查询中使用了父查询的信息!

6.1 找出每个部门工资最高的员工!

代码语言:javascript
复制
SELECT
	dep. NAME AS '部门',
	p1. NAME AS '员工',
	p1.salary
FROM
	emp p1
JOIN dep ON dep.id = p1.depId
WHERE
	p1.salary = (
		SELECT
			MAX(salary) AS max
		FROM
			emp p2
		WHERE
			p2.depId = p1.depId
	)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实例用表
  • 1.WHERE 里边的子查询
  • 2.SELECT 里边的子查询
  • 3.having 里边的子查询
  • 4.ON 里边的子查询
  • 5.FROM 里边的子查询
  • 6.半连接查询
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档