mysql关联查询详解(详解mysql 组合查询)
类别:数据库 浏览量:2425
时间:2022-01-19 00:17:57 mysql关联查询详解
详解mysql 组合查询使用union
多数sql查询都只包含一个或多个表中返回数据的单条select语句。mysql也允许执行多个查询(多条select语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)
有两种情况需要使用组合查询:
- 在单个表查询中从不同的表返回类似结构的数据;
- 对单个表执行多个查询,按单个查询返回数据。
组合查询和多个where条件:多数情况下,组合相同表的两个查询完成的工作与具有多个where子句条件的单条查询完成的工作相同。
可用union操作符来组合数条sql查询,所需要做的就是给出每条select语句,在各条语句之间放上关键字union
例如:
假设需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品,当然可以利用where子句来完成,不过这里我们使用union
- 这里是两条语句的组合
|
select vend_id, prod_id, prod_price from products where prod_price <= 5; |
|
select vend_id, prod_id, prod_price from products where vend_id in (1001, 1002); |
- 可以使用下面的语句
|
select vend_id, prod_id, prod_price from products where prod_price <= 5 union select vend_id, prod_id, prod_price from products where vend_id in (1001, 1002); |
- 同样,可以使用where子句
|
select vend_id, prod_id, prod_price from products where prod_price <= 5 or vend_id in (1001, 1002); |
union规则
- union必须由两条或两条以上的select语句组成,语句之间用关键字union分隔
- union中的每个查询必须包含相同的列、表达式或聚集函数(各个列不需要以相同的次序列出)
- 列数据烈性必须兼容:类型不必完全相同,但必须是dbms可以隐含地转换的类型(不同数值类型或不同的日期类型)
包含或取消重复的行
union会从查询的结果集中自动去除重复的行,如果想返回所有匹配行,可使用union all
|
select vend_id, prod_id, prod_price from products where prod_price <= 5 union all select vend_id, prod_id, prod_price from products where vend_id in (1001, 1002); |
对组合查询结果排序
select语句的输出用order by子句排序,在用union组合查询时,只能使用一条order by子句。它必须出现在最后一条select语句之后。不允许使用多条order by子句。
|
select vend_id, prod_id, prod_price from products where prod_price <= 5 union select vend_id, prod_id, prod_price from products where vend_id in (1001, 1002) order by vend_id, prod_price; |
以上就是详解mysql 组合查询的详细内容,更多关于mysql 组合查询的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/ZSMblog/p/12067779.html
您可能感兴趣
- idea安装mybatis(IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug)
- 所有聚合函数mysql教程(Mysql 聚合函数嵌套使用操作)
- mysql主从复制忽略问题(MySQL复制问题的三个参数分析)
- 配置mysql可以远程登录(开启MySQL远程连接的方法)
- mysql char和varchar区别(MySQL CHAR和VARCHAR存储、读取时的差别)
- 深入理解mysql索引(MySQL中冗余和重复索引的区别说明)
- mysql 分库分表步骤(MySQL读多写少设计方案 - 分库分表还能这么做?)
- centos如何安装mysql8.0版本(Centos7下安装MySQL8.0.23的步骤小白入门级别)
- mysql错误代码之1064的解决方案(mysql错误代码之1064的解决方案)
- mysql所有用户命令(MySQL用户管理与PostgreSQL用户管理的区别说明)
- mysql密码过期怎么改(年底了,你的mysql密码安全吗)
- mysql与oracle体系结构(详解MySQL实时同步到Oracle解决方案)
- navicat premium连接mysql报错(Navicat连接MySQL错误描述分析)
- mysql带log的版本(聊聊MYSQL中Redo Log是什么?)
- mysql主从复制原理详解(详解MySQL kill 指令的执行原理)
- mysql主从复制如何实现(MySql主从复制实现原理及配置)
- 赢麻了 富士公布2021年度财报 营利同比增长240(富士公布2021年度财报)
- 医事文化谈屑 | 古人的名 字 号(医事文化谈屑古人的名)
- ()
- 网友很惭愧,自己写了很多年的字,到头来还不如一名小学生写的好(自己写了很多年的字)
- 中华第一楷 张瑞龄 86岁高龄,苦练楷书71年,一幅字卖593万(中华第一楷张瑞龄)
- 冯骥才 年意(冯骥才年意)
热门推荐
- mysql百万数据分页查询优化方案(MySQL单表亿级数据分页怎么优化?)
- 云主机与服务器有什么区别(云服务器是什么,云主机干什么用的?)
- djangorestfulframework教程(Django restframework 源码分析之认证详解)
- css 翻动效果(CSS实现全屏切换效果的示例代码)
- css修饰文本的方法(CSS常用文本样式总结)
- python实现linux服务(Python实现Linux监控的方法)
- thinkphp5框架怎么打开(thinkphp5.1框架模板布局与模板继承用法分析)
- C# File类的操作
- centos7系统密码忘了怎么办(CentOS 7忘记密码解决方案过程图解)
- mysql从入门到实践万字详解(mysql基础知识扫盲)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9