读书人

sql查询出来的值雷同但是不相等这是

发布时间: 2014-01-12 00:03:16 作者: rapoo

sql查询出来的值相同但是不相等,这是为什么呢?

T1和T2是结构完全相同的表,根据主键PARTY_ID关联,max字段是在两张表中都是number类型的,查询T1T2的max不相同的数据时却出现了相同的max值


SELECT t1.MAXLARGESTDURATION,t2.MAXLARGESTDURATION
FROM T_MK_ROLLINGLIST t1,T_ROLLINGLIST t2
WHERE t1.PARTY_ID = t2.PARTY_ID
AND t1.MAXLARGESTDURATION <> t2.MAXLARGESTDURATION;

t1.MAX t2.MAX
16868
23333
34848
447526
5150150
66161
7451451
82929
95252
103838
11137137
122828
134091
143232
154956
167171
174646
184242
192929
205252

[解决办法]
引用:
T1和T2是结构完全相同的表,根据主键PARTY_ID关联,max字段是在两张表中都是number类型的,查询T1T2的max不相同的数据时却出现了相同的max值


SELECT t1.MAXLARGESTDURATION,t2.MAXLARGESTDURATION
FROM T_MK_ROLLINGLIST t1,T_ROLLINGLIST t2
WHERE t1.PARTY_ID = t2.PARTY_ID
AND t1.MAXLARGESTDURATION <> t2.MAXLARGESTDURATION;

t1.MAX t2.MAX
16868
23333
34848
447526
5150150
66161
7451451
82929
95252
103838
11137137
122828
134091
143232
154956
167171
174646
184242
192929
205252

很奇怪,你再仔细检查一下,看看两个表的数据。
可以先选择一条数据测试一下。因为这样看语法什么的都没错。很有可能是表的数据造成的
[解决办法]
楼主你确定执行的是你贴的sql吗?
为什么结果集的字段和你sql中的字段名不一样
[解决办法]
引用:
Quote: 引用:

Quote: 引用:


T1和T2是结构完全相同的表,根据主键PARTY_ID关联,max字段是在两张表中都是number类型的,查询T1T2的max不相同的数据时却出现了相同的max值


SELECT t1.MAXLARGESTDURATION,t2.MAXLARGESTDURATION
FROM T_MK_ROLLINGLIST t1,T_ROLLINGLIST t2
WHERE t1.PARTY_ID = t2.PARTY_ID
AND t1.MAXLARGESTDURATION <> t2.MAXLARGESTDURATION;

t1.MAX t2.MAX
16868
23333
34848
447526
5150150
66161
7451451
82929
95252
103838
11137137
122828
134091
143232
154956
167171
174646
184242
192929
205252

很奇怪,你再仔细检查一下,看看两个表的数据。
可以先选择一条数据测试一下。因为这样看语法什么的都没错。很有可能是表的数据造成的


单条数据也是那样,我又试了下这样的

SELECT t1.MAXLARGESTDURATION , t2.MAXLARGESTDURATION,
CASE WHEN t1.MAXLARGESTDURATION = t2.MAXLARGESTDURATION THEN '相等'
ELSE '不相等' END
FROM T_MK_ROLLINGLIST t1,T_ROLLINGLIST t2
WHERE t1.PARTY_ID = t2.PARTY_ID
AND t1.MAXLARGESTDURATION != t2.MAXLARGESTDURATION;

16868不相等
23333不相等
34848不相等
447526不相等
5150150不相等
66161不相等
7451451不相等
82929不相等
95252不相等
103838不相等
11137137不相等
122828不相等
134091不相等
143232不相等
154956不相等
167171不相等
174646不相等
184242不相等

你的CASE WHEN已经明显的显示出数据库在作等值比较时,我们看上去一样的数据其实是不相等的。
你确定你的数据是NUMBER型吗?类型一样吗?是否有空格的原因?还有就是全/半角。
以上原因都会导致数据库判断时不相等
[解决办法]
不要加 AND t1.MAXLARGESTDURATION <> t2.MAXLARGESTDURATION 条件

[解决办法]
引用:
你的CASE WHEN已经明显的显示出数据库在作等值比较时,我们看上去一样的数据其实是不相等的。
你确定你的数据是NUMBER型吗?类型一样吗?是否有空格的原因?还有就是全/半角。
以上原因都会导致数据库判断时不相等



应该是这个问题吧。
[解决办法]
你最后条件改成t1.MAXLARGESTDURATION - t2.MAXLARGESTDURATION= 0 再试一下。 如果真的是number 不可能出现你的结果。
[解决办法]
数据类型不一样

读书人网 >oracle

热点推荐