【MySQL】数据处理(数据的查询之子查询、复查询)

网友投稿 244 2022-11-06


【MySQL】数据处理(数据的查询之子查询、复查询)

MySQL.数据处理(数据的查询之子查询、复查询)

子查询

通过添加(select…)搜索进行;

mysql> select*from 图书信息;+---------------+---------------------------------+--------+------+--------+------------+----------+----------+| ISBN编号 | 图书名称 | 作者 | 价格 | 出版社 | 出版日期 | 图书类型 | 封面图片 |+---------------+---------------------------------+--------+------+--------+------------+----------+----------+| 9787121204147 | oracle11g数据库应用、设计与管理 | 陈承欢 | 38 | 4 | 2014-07-01 | T | 汪涛 || 9787040393293 | 实用工具软件任务驱动式教程 | 陈承欢 | 26 | 1 | 2014-11-01 | T | NULL || 9787040393293 | 网页美化与布局 | 陈承欢 | 39 | 1 | 2015-08-01 | T | NULL || 9787115374035 | 跨平台的移动Web开发实战 | 陈承欢 | 29 | 2 | 2015-03-01 | T | NULL || 9787121052347 | 数据库应用基础实例教程 | 陈承欢 | 229 | 4 | 2008-12-30 | T | 高成和 || 9787121052348 | JAVA编程教学 | 赵天逸 | 33 | 5 | 2008-12-29 | T | NULL || 9787121052349 | MYSQL基础教学 | 赵天逸 | 30 | 3 | 2009-12-29 | T | NULL || 9787121052350 | 计算机基础教程 | 赵天宇 | 45 | 1 | 2000-12-29 | S | 徐松涛 || 9787121052352 | 网络技术与应用 | 张泽段 | 100 | 4 | 2020-11-11 | M | 张思杰 || 9787121052351 | 计算机基础 | 赵天宇 | 45 | | 2000-12-29 | | NULL || 9787121052358 | 计算机教程 | 马宇 | 50 | 1 | 2000-12-29 | | NULL || 9787121052338 | 计算机教程 | 马宇 | 42 | 2 | 2000-12-13 | F | NULL |+---------------+---------------------------------+--------+------+--------+------------+----------+----------+12 rows in set (0.09 sec)单值嵌套式mysql> select 图书名称,价格 from 图书信息 where 作者=(select 作者 from 图书信息 where 作者='张泽段');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 网络技术与应用 | 100 |+----------------+------+1 row in set (0.06 sec)

在这里只是子查询的一种,属于单值嵌套式。即后面的select语句查询结果为但一值时,用“=”。下面几类属于多值嵌套:

1.any

(<)any 比中间的任何一个大(小) ,只要比最小(大)的大(小)==

mysql> select 图书名称,价格 from 图书信息 where 价格>any(select 价格 from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 网页美化与布局 | 39 || 计算机基础教程 | 45 || 网络技术与应用 | 100 || 计算机基础 | 45 || 计算机教程 | 45 |+----------------+------+5 rows in setmysql> select 图书名称,价格 from 图书信息 where 价格>(select min(价格) from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 网页美化与布局 | 39 || 计算机基础教程 | 45 || 网络技术与应用 | 100 || 计算机基础 | 45 || 计算机教程 | 45 |+----------------+------+5 rows in setmysql> select 图书名称,价格 from 图书信息 where 价格 select 图书名称,价格 from 图书信息 where 价格<(select max(价格) from 图书信息 where 图书名称='网页美化与布局');+----------------------------+------+| 图书名称 | 价格 |+----------------------------+------+| 实用工具软件任务驱动式教程 | 26 || 跨平台的移动Web开发实战 | 29 || 数据库应用基础实例教程 | 29 || JAVA编程教学 | 33 || MYSQL基础教学 | 30 || 网页美化与布局 | 36 |+----------------------------+------+6 rows in set

2.in表示符合在后一个select查询的结果之中

mysql> select 图书名称,价格 from 图书信息 where 出版社 in (select 出版社 from 图书信息 where 图书名称='网页美化与布局');+----------------------------+------+| 图书名称 | 价格 |+----------------------------+------+| 实用工具软件任务驱动式教程 | 26 || 网页美化与布局 | 39 || 数据库应用基础实例教程 | 29 || 计算机基础教程 | 45 || 网络技术与应用 | 100 || 计算机教程 | 45 || 网页美化与布局 | 36 |+----------------------------+------+7 rows in set

in的用法等同于=all

mysql> select 图书名称,价格 from 图书信息 where 价格=any(select 价格 from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 网页美化与布局 | 39 |+----------------+------+1 row in set (0.10 sec)mysql> select 图书名称,价格 from 图书信息 where 价格 in(select 价格 from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 网页美化与布局 | 39 |+----------------+------+1 row in set (0.10 sec)

3.all>all大于最大,

> select 图书名称,价格 from 图书信息 where 价格>all(select 价格 from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 计算机基础教程 | 45 || 网络技术与应用 | 100 || 计算机基础 | 45 || 计算机教程 | 45 |+----------------+------+4 rows in setmysql> select 图书名称,价格 from 图书信息 where 价格>(select max(价格) from 图书信息 where 图书名称='网页美化与布局');+----------------+------+| 图书名称 | 价格 |+----------------+------+| 计算机基础教程 | 45 || 网络技术与应用 | 100 || 计算机基础 | 45 || 计算机教程 | 45 |+----------------+------+4 rows in set

复查询:

即将前部查询结果的表作为后部查询的基本表进行后一个select查询语句。

搜索出价格大于该出版社书平均价格的书:

mysql> select 图书名称,价格,出版社 from 图书信息 a where a.价格>(select avg(价格) from 图书信息 b where a.出版社=b.出版社);+-------------------------+------+--------+| 图书名称 | 价格 | 出版社 |+-------------------------+------+--------+| 跨平台的移动Web开发实战 | 29 | 2 || 计算机基础教程 | 45 | 3 || 网络技术与应用 | 100 | 4 || 计算机基础 | 45 | 5 || 计算机教程 | 45 | 1 |+-------------------------+------+--------+5 rows in set

查询有出版图书的出版社名称:exists 判断有无的,不管多少

mysql> select 出版社名称,出版社ID from 出版社 a where exists(select*from 图书信息 b where a.出版社ID=b.出版社);+----------------+----------+| 出版社名称 | 出版社ID |+----------------+----------+| 高等教育出版社 | 1 || 人民邮电出版社 | 2 || 清华大学出版社 | 3 || 电子工业出版社 | 4 || 机械工业出版社 | 5 |+----------------+----------+5 rows in set

Union(all):

1.不属于子查询 2.将多个查询的结果联合在一起 3.结果集的列必须一样 4.对数据的类型无要求,但没意义 5.union 没有all是将相同的去掉了。

> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and 价格>30;+---------------+----------------+----------------+| ISBN编号 | 图书名称 | 出版社名称 |+---------------+----------------+----------------+| 9787121052348 | JAVA编程教学 | 机械工业出版社 || 9787121052350 | 计算机基础教程 | 清华大学出版社 || 9787121052352 | 网络技术与应用 | 电子工业出版社 || 9787121052351 | 计算机基础 | 机械工业出版社 || 9787121052358 | 计算机教程 | 高等教育出版社 || 9787040393293 | 网页美化与布局 | 高等教育出版社 |+---------------+----------------+----------------+6 rows in setmysql> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and b.出版社名称='清华大学出版社';+---------------+----------------+----------------+| ISBN编号 | 图书名称 | 出版社名称 |+---------------+----------------+----------------+| 9787121052349 | MYSQL基础教学 | 清华大学出版社 || 9787121052350 | 计算机基础教程 | 清华大学出版社 |+---------------+----------------+----------------+2 rows in setmysql> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and 价格>30 -> union all -> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and b.出版社名称='清华大学出版社';+---------------+----------------+----------------+| ISBN编号 | 图书名称 | 出版社名称 |+---------------+----------------+----------------+| 9787121052348 | JAVA编程教学 | 机械工业出版社 || 9787121052350 | 计算机基础教程 | 清华大学出版社 || 9787121052352 | 网络技术与应用 | 电子工业出版社 || 9787121052351 | 计算机基础 | 机械工业出版社 || 9787121052358 | 计算机教程 | 高等教育出版社 || 9787040393293 | 网页美化与布局 | 高等教育出版社 || 9787121052349 | MYSQL基础教学 | 清华大学出版社 || 9787121052350 | 计算机基础教程 | 清华大学出版社 |+---------------+----------------+----------------+8 rows in setmysql> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and 价格>30 -> union -> select a.ISBN编号,a.图书名称,b.出版社名称 from 图书信息 a join 出版社 b on a.出版社=b.出版社ID and b.出版社名称='清华大学出版社';+---------------+----------------+----------------+| ISBN编号 | 图书名称 | 出版社名称 |+---------------+----------------+----------------+| 9787121052348 | JAVA编程教学 | 机械工业出版社 || 9787121052350 | 计算机基础教程 | 清华大学出版社 || 9787121052352 | 网络技术与应用 | 电子工业出版社 || 9787121052351 | 计算机基础 | 机械工业出版社 || 9787121052358 | 计算机教程 | 高等教育出版社 || 9787040393293 | 网页美化与布局 | 高等教育出版社 || 9787121052349 | MYSQL基础教学 | 清华大学出版社 |+---------------+----------------+----------------+7 rows in set


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口管理(接口管理办法)
下一篇:接口自动化测试框架(接口自动化测试框架面试介绍)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~