mysql-联合查询

一.联合查询的概念

.对于unio查询,就是把多次查询的结果合并起来,形成一个新的查询果集。

SELECT 字段列表 FROM 表A...
UNION[ALL]
SELECT 字段列表 FROM 表B...,

二.将薪资低于5000的员工,和年龄大于50岁的员工全部查询出来

select * from emp  where salary<5000
select * from emp  where age>50
union all

将上面的结果集合并起来,

对查询的进行去重

union 

三.注意点

1.对于联合查询多张表的列数必须保持一致,字段类型也必须保持一致。

2.union all 会将全部的数据直接合并在一起,union会对合并之后的数据去重

四.子查询

1.概念

SQL语句中嵌套SELECT语句,称为嵌套语句,又称子查询

SELECT * FROM t1 WHERE column1=(SELECT column1 FR0M t2);

子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。

五.标量子查询

子查询返回的结果是单个值(数字,字符串,日期等),最简单的形式,这种子查询成为标量子查询

常用的操作符:= <>  > >= < <=

六.案例

1.查询销售部的所有员工信息

a.查询 销售部部门的id

select id from dept where name='销售部';

b.根据销售部 部门id

select * from emp where dept_id=4

select * from emp where dept_id=(select id from dept where name='销售部')

2.查询在"方东白“入职之后的员工信息

a.查询方东白的入职日期

select  entrydate from emp where name="方东白"

b.指定入职日期之后入职的员工

select * from emp where entrydate>(select  entrydate from emp where name="方东白");

六.列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询

常用的操作符:IN ,NOT IN ,ANY ,SOME,ALL

七.案例

1.查询销售部和市场部的所有员工信息

a.查询销售部和市场部的部门ID

select id from dept where name="销售部" or name="市场部";

b.根据部门ID,查询员工信息

select  * from  emp  where  dept_id in(2,4);

合并:

select  * from  emp  where  dept_id in(select id from dept where name="销售部" or name="市场部");

2.查询比财务部 所有人工资都高的员工信息

selec id from  dept where name="财务部"

 

select salary from emp where dept_id=(selec id from  dept where name="财务部");

b.比财务部 所有人工资都高的员工信息

select * from emp where salary> all(select salary from emp where dept_id=(selec id from  dept where name="财务部"))

子查询返回过来的结果都要去满足

3.比研发部其中任意一人工资高的员工信息

a.查询研发部所有人的工作

select salary from emp where dept_id=(selec id from  dept where name="研发部");

b.比研发部任意人高的员工工资

selec * from emp where salary >any(select salary from emp where dept_id=(selec id from  dept where name="财务部"))

子查询返回的就是单行多列的数据。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中的联合查询是一种将多个查询结果合并为一个结果集的查询方式。它可以通过使用UNION或UNION ALL关键字来实现。UNION关键字用于合并多个查询结果,并去除重复的行,而UNION ALL则保留所有的行,包括重复的行。联合查询可以用于在一个查询中获取多个相关表的数据,并且可以根据需要对结果进行排序和筛选。 要进行联合查询,需要在SELECT语句中使用相同的列数和相同的数据类型。例如,我们可以使用以下查询来进行联合查询: SELECT student.name AS 学生名字, course.name AS 课程名字, score.score FROM student JOIN score ON student.id = score.student_id JOIN course ON score.course_id = course.id; 这个查询将返回一个结果集,包含学生的名字、课程的名字和对应的分数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL数据库增删改查进阶 — 聚合查询、分组查询、联合查询](https://blog.csdn.net/m0_63033419/article/details/127956722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [MySql整理(基础进阶运维).docx](https://download.csdn.net/download/qq441540598/88192019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值