mysql sql组合_详解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 组合查询的资料请关注我们其它相关文章!
本文标题: 详解mysql 组合查询
本文地址: http://www.cppcns.com/shujuku/mysql/370571.html
mysql sql组合_详解mysql 组合查询相关推荐
- mysql 日期比较_详解Mysql中日期比较大小的方法
假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: 代码如下 select * from product where add_time = '2 ...
- mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update
摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...
- mysql 数据分组_详解MySQL 数据分组
创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...
- java mysql 自动提交_详解MySQL与Spring的自动提交(autocommit)
1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交.如果修改为关闭状态,则执行DML语句之后要手动提交 才能生效 ...
- mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)
前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...
- mysql+dump+选项_详解MySQL数据备份之mysqldump使用方法
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- mysql 参照完整性规则_详解mysql数据库审计特点、实现方案及审计插件部署演示...
概述 数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断.它通过对用户访问数据库行为的记录.分 ...
- mysql function函数_详解MySQL如何按表创建千万级的压测数据
概述 有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1.准备测试表 CREATE TAB ...
- mysql 获取当前日期_详解mysql 获取当前日期及格式化
本篇文章主要介绍了mysql 获取当前日期及格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORM ...
最新文章
- 改变状态栏的背景色和文字的颜色
- Qt Creator用户界面
- Dubbo与SpringCloud的架构与区别
- 结对编程 - 马尔科夫链
- telnet php,使用php实现telnet功能
- 专业的在线考试系统-快考题,支持自制题库/在线试卷答题
- 苹果手机Apple ID 忘记密码 ,频繁跳出登录iCloud如何关闭
- win10哪个版本打游戏好?win10游戏性能分析
- 不擅长演讲?值得技术收藏的PPT演讲底层逻辑--大树模型
- 入职腾讯第九年,我辞职了!!!
- 柱状图python_化学领域里「过柱子」是什么意思?柱子干了为什么可怕?
- sql 节假日判断(春节、中秋、国庆、周末等)
- burpsuite实现抓Windows for Android(WSA)包
- iOS OC消除黄色警告⚠️ (不断的更新中...)
- 虚拟机软件有哪些?分别有哪些作用?
- 20189200余超 2018-2019-2 移动平台应用开发实践第三周作业
- 《Linux Shell编程从初学到精通(第2版)》pdf
- ThinkPHP5之Ajax分页
- matlab等高线图例如何显示,如何在MATLAB中的等高线图的等高线上放置字符串标签...
- 软件行业的最后十年【ChatGPT】
热门文章
- 到底是谁发明了物联网?
- 还不懂Redis?看完这个故事就明白了!
- 腾讯游戏与NVIDIA合作发布START云游戏服务
- 如何从零开始设计一颗芯片?
- 如何成为云计算专家?这些必须知道
- vue如何在末尾添加_怎样在Linux上开发vue项目
- php组成,PHP的控制结构,PHP脚本是由一系列语句组成的。
- input 没显示 html,html - 为什么我的input type =“submit”没有显示?
- SpringBoot配置文件 【自定义配置项】
- jdk1.6集成activemq的2种方式