数据库 union all 有数据表 union all 无数据表之后,没有数据了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库 union all 有数据表 union all 无数据表之后,没有数据了相关的知识,希望对你有一定的参考价值。
SELECT GY_YLSF.FYMC,
GY_YLSF.FYDW,
GY_YLSF.FYDJ,
MS_YJ01.YSDM,
MS_YJ01.KSDM,
GY_KSDM.KSMC,
SUM(MS_YJ02.YLSL) AS FYSL,
SUM(MS_YJ02.HJJE) AS HJJE
FROM GY_KSDM,
MS_MZXX,
MS_YJ01,
MS_YJ02,
GY_YLSF
WHERE ( MS_MZXX.FPHM = MS_YJ01.FPHM ) and
( MS_YJ01.YJXH = MS_YJ02.YJXH ) AND
( GY_KSDM.KSDM = MS_YJ01.KSDM ) AND
( MS_MZXX.MZLB = 1) and
( MS_MZXX.HZRQ >= 2012-11-11 ) and
( MS_MZXX.HZRQ <= 2012-12-11) and
( MS_YJ02.YLXH = GY_YLSF.FYXH ) AND
( GY_YLSF.FYGB = 1)
GROUP BY MS_YJ01.YSDM,
MS_YJ01.KSDM,
GY_KSDM.KSMC,
GY_YLSF.FYMC,
GY_YLSF.FYDW,
GY_YLSF.FYDJ
union all
SELECT GY_YLSF.FYMC,
GY_YLSF.FYDW,
GY_YLSF.FYDJ,
MS_YJ01.YSDM,
MS_YJ01.KSDM,
GY_KSDM.KSMC,
0 - SUM(MS_YJ02.YLSL) AS FYSL,
0 - SUM(MS_YJ02.HJJE) AS HJJE
FROM GY_KSDM,
MS_ZFFP,
MS_YJ01,
MS_YJ02,
GY_YLSF
WHERE ( MS_ZFFP.FPHM = MS_YJ01.FPHM ) and
( MS_YJ01.YJXH = MS_YJ02.YJXH ) AND
( GY_KSDM.KSDM = MS_YJ01.KSDM ) AND
( MS_ZFFP.MZLB = 1) and
( MS_ZFFP.HZRQ >= 2012-11-11 ) and
( MS_ZFFP.HZRQ <= 2012-12-11 ) and
( MS_YJ02.YLXH = GY_YLSF.FYXH ) AND
( GY_YLSF.FYGB = 1)
GROUP BY MS_YJ01.YSDM,
MS_YJ01.KSDM,
GY_KSDM.KSMC,
GY_YLSF.FYMC,
GY_YLSF.FYDW,
GY_YLSF.FYDJ
union合并两个结果集会去重复,相当于distinct
union all不会去重 参考技术A 有点奇怪啊, 你这 2部分的 sql , 看上去, 应该都没法执行吧
2012-11-11
日期没加引号, 还是 全角字符的 - 参考技术B 没看懂你想问什么……
union all和union的区别
union:用于合并数据查询不显示重复数据,会对重复数据进行去重。
union all:用于合并数据查询显示重复数据。
union 和 union all 对select语句的要求:
(1)各个select查询语句中,各个select查询的列数的个数必须相同,不能1个select查询的列数是4列,而另一个select查询的列数是7列。
(2)各个select查询语句中,每个列的数据类型必须相同或相似。不能1个select的第1列是int类型,而另一个select的第1列是nvarchar类型。
对排序的处理不同
union将会按照字段的顺序进行排序;union all只是简单的将两个结果合并后就返回。从效率上说,union all 要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用union all。
以上是关于数据库 union all 有数据表 union all 无数据表之后,没有数据了的主要内容,如果未能解决你的问题,请参考以下文章