sql 语句union 两个表的字段类型相同为何不去重

select *from ZZJGBM:

select *from HT_DEP:

select orgname, orgcode from ZZJGBMunionselect orgname, orgcode from HT_DEP
或者
select a.orgname,a.orgcode from (select orgname,orgcode from ZZJGBM) aunionselect b.orgname,b.orgcode from (select orgname,orgcode from HT_DEP) b
结果都是如下图所示,红框内数据没有去重呢?这是为什么?

我查看了下这两个表(ZZJGBM是表,HT_DEP是视图)里这两个字段类型,也是一样的
ZZJGBM:

HT_DEP:
SQL> desc HT_DEPName Type Nullable Default Comments ------- ------------- -------- ------- -------- ORGNAME VARCHAR2(50) Y ORGCODE VARCHAR2(20) Y 上级组织架够 VARCHAR2(400) Y

第1个回答  2014-05-05
你自己看看那些是不是完全一样 这样看不出来
那4个复制出来 放到单引号里面 看 肯定有一样的地方追问

select a.orgname,a.orgcode from ZZJGBM a left join HT_DEP b on a.orgcode=b.orgcode and a.orgname=b.orgname
我用这个语句查询,是只有一条记录的,应该是一样的呀

追答

那就不知道 oracle有的时候会出现这样的莫名其妙的问题,如果你真的确定是一样的话 退出数据库,重新登陆 再试试

本回答被网友采纳
第2个回答  2014-05-05
外面在套一层查询加上group by试试
可能你的字符串后面有空格之类,可以试试trim函数删除字符串前后空格追问

其中一个表的orgcode字段数据Hex格式下多了红框这部分

相似回答