mysql中union和union all如何使用及注意事项是什么
如果我们需要将两个 select 语句的结果作为一个整体显示出来,我们就需要用到 union 或者 union all 关键字。union (或称为联合)的作用是将多个结果合并在一起显示出来。
union 和 union all 的区别是,union 会自动压缩多个结果集合中的重复结果,而 union all 则将所有的结果全部显示出来,不管是不是重复。
union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表 union。
如下sql:
SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'
UNION
SELECT create_time FROM `e_msku_sku` WHERE msku = '
21-BQLEDNL120W-BK'
结果:
union all:对两个结果集进行并集操作,包括重复行,不进行排序; 如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
如下sql:
SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'
UNION ALL
SELECT create_time FROM `e_msku_sku` WHERE msku = '
21-BQLEDNL120W-BK'
结果:
2. 注意事项2.1、UNION 和 UNION ALL 内部的 SELECT 语句必须拥有相同数量的列2.2、每条 SELECT 语句中列的顺序必须相同先来说下,如果顺序不同,会是什么结果?
答:结果字段的顺序以union all 前面的表字段顺序为准。
union all 后面的表的数据会按照顺序依次附在后面。注意:按照字段顺序匹配,而不是按照字段名称匹配。
sql如下:顺序对结果的影响
SELECT *FROM(
SELECT msku,create_time FROM `e_msku_sku` WHERE msku = '
21-BQLEDNL120W-BK'
UNION ALL
SELECT create_time,msku FROM `e_msku_sku` WHERE msku = '
21-BQLEDNL120W-BK'
) t
综上:
union all 结果字段的顺序以 union all 前面的表字段顺序为准。union all 后面的表的数据会按照字段顺序依次附在后面,而不是按照字段名称匹配。
我们上面以*来表示顺序的不同,其实你写成不同顺序的字段结果一致。
3. union all 使用场景sql 中的组合in,可用 union all 来代替,提高查询效率
修改前:组合in sql
SELECT ***, ***, ***, ***, ***FROM e_rating_info
WHERE rating_quantity <
>
0 AND (***, ***)
IN (('
***'
, '
***'
), ('
***'
, '
***'
),
('
***'
, '
***'
), ('
***'
, '
***'
),
('
***'
, '
***'
), ('
***'
, '
***'
),
('
***'
, '
***'
), ('
***'
, '
***'
),
('
***'
, '
***'
), ('
***'
, '
***'
))
ORDER BY *** DESC
修改后:UNION ALL sql
<select id="
queryRatingInfo"
resultType="
***"
>
<
foreach collection="
ratingList"
item="
item"
index="
index"
open="
"
separator="
UNION ALL"
close="
"
>
SELECT ***, ***, ***, ***, ***
FROM e_rating_info
WHERE rating_quantity &
lt;
&
gt;
0
AND country_code = #{item.***}
AND asin = #{item.***}
<
/foreach>
ORDER BY *** DESC;
<
/select>
另外,如果系统中进行了分表,一定要保证各个表的字段顺序一致。特别是修改的时候。亲身经历告诉我,如果使用 * 来汇总查询结果,一定会有问题。
补充:mysql中union和union all的区别一、区别1:取结果的交集1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序;
2、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;
1、union: 会对获取的结果进行排序操作
2、union all: 不会对获取的结果进行排序操作
三、区别3:1、union看到结果中ID=3的只有一条
select * from student2 where id <4
union
select * from student2 where id >
2 and id <
6
2、union all 结果中ID=3的结果有两个
select * from student2 where id <4
union all
select * from student2 where id >
2 and id <
6
随着技术的快速发展,JavaScript已经成为了最为流行的编程语言之一。而与此同时,它在不断地进行着变革和不断创新。在此过程中,我们也看到了JS的新时代,不再称之为JavaScript,而是简称JS。那么,JS离开“JavaScript”名称,成为Web开发标准的符合条件吗?
JS是继承JavaScript的项目
一些JS开发人员可能会说,JS是继承了JavaScript项目,因此应该都叫作JavaScript。在一定程度上,这句话是正确的。
有关JS的历史,捷克软件开发人员伊夫托·Uhlenbroek在2016年做了一次主题演讲。他展示了JS以其“JavaScript”名称的未来工作流程。其工作流程建立在这个事实之上,即JS在未来将不会脱离原始JavaScript语言完全。在这种情况下,这种“继承”或“取代”现象似乎刚刚开始。
JS在Web开发中的应用广泛
在Web开发中,近几年来JS的使用率越来越高。例如,React、AngularJS、Vue.js、Node.js等框架和库都是JS的组件。除此之外,JS也是HTML5标准中唯一一种脚本语言,这意味着JS将是Web技术的重要组成部分。
然而,在开发中,使用更简单、更方便、更易于使用的编程语言不仅是为了让开发工程师使用起来更舒适,同时也应该是为了确保项目的共识性和标准化。这就是为什么JS在未来可以被作为Web开发的标准。
结论
在Web开发中,起名不仅只是起名而已。我们可以看到,JS已经走在了成为Web标准的道路上。但是,在实际开发过程中,可以选择是否使用JS或JavaScript,至少在目前来看,这并不影响开发的质量、效率或可靠性。当然,谁知道未来会发生什么。但无论如何,我们今天所面对的问题可不是这个。我们要思考的是,如何合理的使用JS或JavaScript,来提高Web应用程序的可靠性和质量,同时接受变化、抱持开放心态。