高级数据操作--联合查询
一.联合查询
1 -- 关键字: union 2 3 -- 语法 4 select 语句1 5 union[union 选项] 6 select 语句2 7 union[union 选项] 8 ...... 9 union[union 选项] 10 select 语句n;
所谓的联合查询,就是将多个查询语句的结果进行纵向上的拼接,也就是将select语句2的查询结果放在select语句1的后面!很显然,总的记录数增加了,但是字段的数量并没有增加!
既然是多个查询记录的拼接,所以联合查询有一个最基本的语法,就是各个select语句查询结果的字段数应该是一样的,比如,不能一个3列,一个是4列!
这里的union选项跟以前学习的select选项是一样的,只是它们的默认值不一样:
1 -- 这里的union跟select的选项一样的,只是默认值不一样 2 -- all:显示全部记录 3 -- distinct : 去除重复数据(union默认选择的值) 4 select * from php_student 5 union all 6 select * from php_student;
当然,上面的查询结果毫无意义!
1.union的应用
表和数据
create table php_student(id int primary key auto_increment,name varchar(20),gender enum('male','female'),class_id tinyint unsigned,age int unsigned,home varchar(40),score tinyint unsigned );insert into php_student values(null,'孙悟空','male',17,600,'花果山',98),(null,'蜘蛛精','female',18,500,'花果山',90),(null,'猪悟能','male',17,700,'高老庄',88),(null,'沙悟净','male',17,750,'流沙河',78),(null,'唐僧','male',17,30,'东土大唐',100),(null,'高翠兰','female',16,18,'高老庄',70),(null,'皇后','female',16,18,'东土大唐',73),(null,'小龙女','female',17,30,'流沙河',80),(null,'小猴子','male',16,100,'花果山',95),(null,'皇帝','male',16,60,'东土大唐',93),(null,'高翠华','female',16,16,'高老庄',80);
union主要应用在以下的几种情形: 第一.获得数据的条件,在同一个select语句中存在某种逻辑上的冲突,或者说很难在同一个逻辑内表示,此时,需要拆分成多个逻辑,也就是在多个select语句中分别实现再将最终的结果组合到一起!
/* 比如:现在要查询上面php_student中,高老庄的一个score最高分,和花果山中的一个最低分! */ -- 先查高老庄中的最高分 select * from php_student where home='高老庄' order by score desc limit 1; -- 在查花果山中最低分 select * from php_student where home='花果山' order by score asc limit 1;-- 把两个查询结果连接在一起 select * from php_student where home='高老庄' order by score desc limit 1 union select * from php_student where home='花果山' order by score asc limit 1; -- 运行出错
这里有几点需要注意的地方:
1, 联合查询中如果使用到了order by,那么就必须要对select子句加上一对小括号();
1 (select * from php_student where home='高老庄' order by score desc limit 1) 2 union 3 (select * from php_student where home='花果山' order by score asc limit 1); -- 运行ok
一个小测试:
1 -- (一个问题)把高老庄按score进行降序排序,并对花果山按score升序排序,并联合在一起 2 (select * from php_student where home='高老庄' order by score desc ) 3 union 4 (select * from php_student where home='花果山' order by score asc ); -- 结果是混乱,不符合要求
2, 如果联合查询中出现了order by子句,就必须配合上limit子句才能生效,当然,如果确实想显示全部的数据,可以在limit的后面加上一个很大的数,比如999999;
1 (select * from php_student where home='高老庄' order by score desc limit 9999999) 2 union 3 (select * from php_student where home='花果山' order by score asc limit 9999999); -- 执行ok
第二, 如果一张数据表的记录数特别大,往往会导致查询效率的低下,此时,我们可以采取某种方式或者规律对数据表进行“水平切割”,此时,每张数据表的结构都是一样的,只是里面存放的数据不一样!此时,在根据某些条件进行查询的时候,可能每一张表都需要查询,最后通过union语句联合到一起!
转载于:https://www.cnblogs.com/mrszhou/p/7470548.html
高级数据操作--联合查询相关推荐
- 高级数据操作--连接查询
一.连接查询--交叉连接 概念 表与表之间是有联系的! 所谓的连接查询,就是指将两张表或者多张表按照某个指定的条件,进行横向上的连接并显示! 所以,从结果上看,字段数增加了! 分类 根据连接查询的性质 ...
- MySQL数据库(17):高级数据操作-删除数据
高级数据操作-删除数据 1.删除数据应该使用where进行条件控制 delete from 表名 where 条件; 2.删除数据可以使用limit来限制删除数量 delete from 表名 whe ...
- MySQL数据操作与查询笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...
- 读取mysql数据到select_MySQL数据库8(十三)高级数据操作之select指令
查询数据 完整的查询指令: select select选项 字段列表 from 数据源 where 条件 group by 分组 having 条件 order by 排序 limit 限制 se ...
- hive mysql类型,(二)Hive数据类型、数据定义、数据操作和查询
1.数据类型 1.1 基本数据类型Hive数据类型长度例子TINYINT1byte有符号整数20 SMALINT2byte有符号整数20 INT4byte有符号整数20 BIGINT8byte有符号整 ...
- 小汤学编程之MySQL(二)——数据库操作、表结构操作、表数据操作、查询数据和数据类型
一.数据库操作 1.创建数据库 2.查询数据库 3.修改数据库 4.使用数据库 二.表结构操作 1.创建表 2.查询表 3.修改表 4.删除表 三.表数 ...
- MySQL查询的进阶操作--联合查询
目录 联合查询 联合查询 union 联合 合并: 将多条查询语句的结果合并成一个结果. 语法格式:查询语句1union查询语句2union ...... union的应用场景: 要查询的结果来自于多 ...
- mysql user表添加记录_《MySQL数据操作与查询》- 返校复习课练习题,创建数据库user_system,创建数据表user及user_ext...
一.其它(共18题,100分) 1.创建数据库user_system CREATE DATABASE user_system 2.在数据库user_system中创建数据表user及user_ext, ...
- MySQL数据操作与查询笔记 • 【第7章 连接查询】
全部章节 >>>> 本章目录 7.1 内连接查询 7.1.1 交叉连接(笛卡尔积) 7.1.2 内连接查询概要 7.1.3 内连接案例 7.1.4 自然连接 7.2 多表连 ...
最新文章
- 漫画:设计模式之 “工厂模式”
- 高并发下缓存与数据库双写不一致解决方案
- Eclipse的基本设置
- 【备忘录】技术笔记整理。
- lamba把逗号拼接的字符串转为list
- 一起来庆祝 .NET 20 周年!
- CF1039D-You Are Given a Tree【根号分治,贪心】
- docker 磁盘问题:device or resource busy
- iOS开源App整理
- 昨晚的我是歌手,人工智能也掺了一脚
- 生成式对抗神经网络code实现
- QT 用QAudio语音库实现音频信号的采集 以及发送到另一台电脑 播放
- 2021 年 4 月程序员工资统计,这太可怕了……
- 无法启动excel服务器以导入_无法启动 web 服务器unable to start embedded tomcat
- 关于Unicode字符集
- 企业微信的聊天记录保存在了哪里?
- 项目经理的修炼,直面需求变更
- 将列表类型的数据转换为树形数据
- 塞尔达传说修改器html,塞尔达传说荒野之息内存修改器修改服装教程
- Docker 中 latest 标签引发的困惑
热门文章
- 植物大战僵尸android11,植物大战僵尸自创版APK
- Vue-生命周期的理解+生命周期图示的理解
- 引用feignClient对象项目启动异常-Consider defining a bean of type ‘com.xxx.service.xxxRemote‘ in your configura
- c语言变量名用一个字母,C语言变量命名规则
- 紧随时代的步伐--Java8特性之接口默认方法
- bzoj 2299(裴蜀定理)
- web3:颠覆互联网还是白日梦一场?
- FFMPEG 压缩视频文件
- 【Windows网络重置】
- golang计算任意两点间的方位角