使用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 组合查询相关推荐

  1. mysql 日期比较_详解Mysql中日期比较大小的方法

    假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: 代码如下 select * from product where add_time = '2 ...

  2. mysql 事务 for update,mysql事务锁_详解mysql 锁表 for update

    摘要 腾兴网为您分享:详解mysql 锁表 for update,智慧农业,真还赚,悦读小说,学习帮等软件知识,以及电池管家,三国群英传3,userland,运满满货主版,王者荣耀,简单3d动画,嘉丽 ...

  3. mysql 数据分组_详解MySQL 数据分组

    创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...

  4. java mysql 自动提交_详解MySQL与Spring的自动提交(autocommit)

    1 MySQL的autocommit设置 MySQL默认是开启自动提交的,即每一条DML(增删改)语句都会被作为一个单独的事务进行隐式提交.如果修改为关闭状态,则执行DML语句之后要手动提交 才能生效 ...

  5. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  6. mysql+dump+选项_详解MySQL数据备份之mysqldump使用方法

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  7. mysql 参照完整性规则_详解mysql数据库审计特点、实现方案及审计插件部署演示...

    概述 数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断.它通过对用户访问数据库行为的记录.分 ...

  8. mysql function函数_详解MySQL如何按表创建千万级的压测数据

    概述 有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1.准备测试表 CREATE TAB ...

  9. mysql 获取当前日期_详解mysql 获取当前日期及格式化

    本篇文章主要介绍了mysql 获取当前日期及格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORM ...

最新文章

  1. 改变状态栏的背景色和文字的颜色
  2. Qt Creator用户界面
  3. Dubbo与SpringCloud的架构与区别
  4. 结对编程 - 马尔科夫链
  5. telnet php,使用php实现telnet功能
  6. 专业的在线考试系统-快考题,支持自制题库/在线试卷答题
  7. 苹果手机Apple ID 忘记密码 ,频繁跳出登录iCloud如何关闭
  8. win10哪个版本打游戏好?win10游戏性能分析
  9. 不擅长演讲?值得技术收藏的PPT演讲底层逻辑--大树模型
  10. 入职腾讯第九年,我辞职了!!!
  11. 柱状图python_化学领域里「过柱子」是什么意思?柱子干了为什么可怕?
  12. sql 节假日判断(春节、中秋、国庆、周末等)
  13. burpsuite实现抓Windows for Android(WSA)包
  14. iOS OC消除黄色警告⚠️ (不断的更新中...)
  15. 虚拟机软件有哪些?分别有哪些作用?
  16. 20189200余超 2018-2019-2 移动平台应用开发实践第三周作业
  17. 《Linux Shell编程从初学到精通(第2版)》pdf
  18. ThinkPHP5之Ajax分页
  19. matlab等高线图例如何显示,如何在MATLAB中的等高线图的等高线上放置字符串标签...
  20. 软件行业的最后十年【ChatGPT】

热门文章

  1. 到底是谁发明了物联网?
  2. 还不懂Redis?看完这个故事就明白了!
  3. 腾讯游戏与NVIDIA合作发布START云游戏服务
  4. 如何从零开始设计一颗芯片?
  5. 如何成为云计算专家?这些必须知道
  6. vue如何在末尾添加_怎样在Linux上开发vue项目
  7. php组成,PHP的控制结构,PHP脚本是由一系列语句组成的。
  8. input 没显示 html,html - 为什么我的input type =“submit”没有显示?
  9. SpringBoot配置文件 【自定义配置项】
  10. jdk1.6集成activemq的2种方式