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

最近应客户要求搞一个比较复杂的报表,数据来源于两个表,需要合成到一个视图里面再进行二次加工,在生成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操作只是简单的将两个结果合并后就返回。

相关日志

此条目发表在IT技术及应用分类目录,贴了, , , 标签。将固定链接加入收藏夹。

sql语法小问题:union连接操作后数据为什么减少了?》有 2 条评论

  1. 首佳软件说:

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

发表评论