做货源网站可以赚钱吗,常州市做网站的公司,表白网页设计代码大全,梅州建站找哪家目录
▐ 子查询概述
▐ 准备工作
▐ 标量子查询
▐ 列子查询
▐ 表子查询
▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询#xff0c;即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询#xff0c;结…目录
▐ 子查询概述
▐ 准备工作
▐ 标量子查询
▐ 列子查询
▐ 表子查询
▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询结果集一般为多行多列把查询结果继续当做一张表 • 出现在 where 后称标量子查询 或列子查询 结果集只有一行一列或一行多列. • 标量子查询的结果集只有一行一列列子查询的结果集是一列多行 (区别) 接下来我会通过一个实例通过代码给大家演示子查询 ▐ 准备工作 创建一个员工表(employee)和一个部门表(dept)两个表是关联关系.
-- 创建一个员工表employee(手动加入数据)
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
gender VARCHAR(1),
age VARCHAR(3),
money INT ,
deptid INT,
CONSTRAINT FK_employee_dept_on_deptid FOREIGN KEY (deptid) REFERENCES dept(id)
)
-- 创建一个部门表dept并插入数据
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10)
) 我们将在此表的基础上进行子查询 ▐ 标量子查询 • 结果集只有一行一列 • 位置where后
️例如要查询工资最高的员工
SELECT * FROM employee WHERE money (SELECT MAX(money) FROM employee) 代码解读 先查询出工资最高是多少一行一列最高工资肯定是一个数 SELECT MAX(money) FROM employee 再将此作为条件再进行一次查询 SELECT * FROM employee WHERE money (SELECT MAX(money) FROM employee) ▐ 列子查询 • 结果集一列多行 • 位置where后
️例如要查询工资在2000~3000的员工信息 SELECT * FROM employee WHERE money IN (SELECT money FROM employee WHERE money2000 AND money3000) 代码解读 先查询出工资在2000~3000之间的值一列多行这个范围的工资值有多个 SELECT money FROM employee WHERE money2000 AND money3000 再将此作为条件再进行一次查询只要工资符合条件的员工就被查询出来 SELECT * FROM employee WHERE money IN 条件,也就是第一次的查询结果 ▐ 表子查询 • 结果集多列多行可以看做又一张表 • 位置from后
️例如要查询同龄的年龄 SELECT * FROM (SELECT age,COUNT(*)c FROM employee GROUP BY age)t WHERE t.c1 代码解读 通过年龄对员工表分组并计数每个年龄的人数多行多列 SELECT age, COUNT(*) FROM employee GROUP BY age 再将此结果当做一个新表进行二次查询 同龄的年龄条件就是count(*)1 SELECT * FROM (SELECT age,COUNT(*)c FROM employee GROUP BY age)t WHERE t.c1 这里要注意对表的重命名 ▐ 多信息嵌套
️例如要查询出每个部门工资最高的员工信息 SELECT * FROM employee s INNER JOIN (SELECT MAX(money)maxmoney,deptid FROM employee GROUP BY deptid)tON s.money t.maxmoney AND s.deptid t.deptid 代码解读 先按部门 分组查询出每个部门的最高工资是多少 SELECT MAX(money)maxmoney, deptid FROM employee GROUP BY deptid 再将此查询结果与员工表关联查询 SELECT * FROM employee s INNER JOIN //内连接 (SELECT MAX(money)maxmoney, deptid FROM employee GROUP BY deptid ) t ON s.money t.maxmoney AND s.deptid t.deptid //查询条件 ▐ 结语 希望这篇关于MySQl数据库—子查询的介绍能对大家有所帮助欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!
本人微信: g2279605572