• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql联合查询UNION和UNION ALL的使用介绍

Mysql联合查询UNION和UNION ALL的使用介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql union all,mysql union all用法,mysql中union all,mysql union all 排序,mysql union等相关知识,希望本文的分享对您有所帮助

一、UNION和UNION ALL的作用和语法

UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同.
SQL UNION 语法:


二、union的用法及注意事项

union:联合的意思,即把两次或多次查询结果合并起来。
要求:两次查询的列数必须一致
推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样
可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。
如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。
如果不想去掉重复的行,可以使用union all。
如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。
如:

在子句中,order by 需要配合limit使用才有意义。如果不配合limit使用,会被语法分析器优化分析时去除。

三、学习例子

下面的例子中使用的原始表:
Employees_China:

使用 UNION 命令实例

列出所有在中国和美国的不同的雇员名:

使用 UNION ALL 命令实例

UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

实例:
列出在中国和美国的所有的雇员:


四、项目使用例子

web项目中经常会碰到整站搜索的问题,即客户希望在网站的搜索框中输入一个词语,然后在整个网站中只要包含这个词的页面都要出现在搜索结果中。由于一个web项目不可能用一张表就全部搞定的,所以这里一般都是要用union联合搜索来解决整个问题的。

下面列举一下本次使用的union联合搜索的sql语句:

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND `subject` LIKE '%调整图片%' ORDER BY `add_time` DESC)

as t1

union all

select * from

(SELECT `id`,`class_name` AS `subject` FROM `web_class` WHERE `active`='1' AND `class_name` LIKE '%调整图片%' ORDER BY `class_id` DESC)

as t2

union

select * from

(SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND (`subject` LIKE '%调整%' OR `subject` LIKE '%图片%') ORDER BY `add_time` DESC)

as t3;
</div>

以上SQL语句的联合查询主要用到了union all和union,至于这两者的区别就是union all会列举所有符合条件的查询结果,而union会将所有符合条件的查询结果做一下去除重复结果的筛选。

对于以上SQL语句的解释就是由于article表和web_class表分属两个不同的表,所以这里不用去除重复结果。然而以上联合查询的第三个分支的sql查询语句是由分词然后组合出来的查询语句,这条sql语句查询的结果是肯定包含第一个分支sql语句的查询结果的,这里就显得没必要了,所以没有使用all而去掉重复的查询结果。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL union 语法代码示例分析
  • mySQL UNION运算符的默认规则研究
  • mysql --- union
  • 详解MySQL中UNION的用法
  • Mysql联合查询UNION和UNION ALL的使用介绍
  • Mysql联合查询UNION和Order by同时使用报错问题的解决办法
  • MySQL中使用自定义变量 编写偷懒的UNION示例

相关文章

  • 2018-12-05中文Access2000速成教程--1.5 使用已有的数据自动建新表
  • 2018-12-05SQLServer 2008中SQL增强之一:Values新用途
  • 2017-05-11winxp 安装MYSQL 出现Error 1045 access denied 的解决方法
  • 2018-12-05java-Mysql数据库和Hibernate持久化框架
  • 2018-12-05SQL数据操作基础(中级)6
  • 2017-05-11centos下mysql主从同步快速设置步骤分享
  • 2018-12-05数据库jdbc封装
  • 2018-12-05用sql获取某字符串中的数字部分的语句
  • 2018-12-05MHA自动Failover与手动Failover的切换原理
  • 2018-12-05mysql索引合并:一条sql可以使用多个索引

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 如何提高百万条的数据库查询速度
    • MySQL服务如何开启?
    • 使用mysql_num_rows()函数逐行获取结果集中的记录数(PHP操作MySQL数据库的方法七)
    • 教你如何在MySQL命令行中使用SQL语句的规则
    • ubuntu下关于mysql 5.6版本的删除/安装/编码配置文件配置的详解
    • Mysql5.7快速修改root密码方法
    • 探讨如何计算age的sql函数
    • 三步堵死 SQL Server注入漏洞
    • mysql 截取指定的两个字符串之间的内容
    • MySQL中show命令方法得到表列及整个库的详细信息(精品珍藏)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有