sql语法小问题:union连接操作后数据为什么减少了?

IT技术及应用 增加评论

最近应客户要求搞一个比较复杂的报表,数据来源于两个表,需要合成到一个视图里面再进行二次加工,在生成view时使用了union连接这个语法.结果发现新问题,当两个表都有数据时,进行union连接操作后数据就减少了一些.如果去掉union连接,单表查询的结果是正常的,说明union连接这里肯定是有问题.

经查证,按SQL Anywhere的手册说明如下:
The UNION operator combines the results of two or more queries into a single result set.

By default, the UNION operator removes duplicate rows from the result set. If you use the ALL option, duplicates are not removed.

UNION运算符结合了两个或两个以上成单个结果集的查询结果。
默认情况下,UNION运算符删除重复行的结果集。如果使用ALL选项,不会删除重复。

UNION在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

解决办法很简单,采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。

标签:, , ,

相关日志

2 Responses to “sql语法小问题:union连接操作后数据为什么减少了?”

  1. 首佳软件 Says:

    开发人员都应该多分享,有了内容,搜索引擎搜索时才有可能查得到.

  2. 首佳软件 Says:

    发现一篇更详细的文章.请看这里:http://dev.firnow.com/course/7_databases/sql/sqlServer/20081216/153831.html

我要发表惊世骇俗的一个评论:

首佳汽车修理厂管理软件广泛应用于全国各地的汽修厂,汽车4S店,维修站,汽车美容连锁店等企业.
论坛文章RSS 评论RSS 登录