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

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
1 68 68
2 33 33
3 48 48
4 47 526
5 150 150
6 61 61
7 451 451
8 29 29
9 52 52
10 38 38
11 137 137
12 28 28
13 40 91
14 32 32
15 49 56
16 71 71
17 46 46
18 42 42
19 29 29
20 52 52

------解决方案--------------------
引用:
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
1 68 68
2 33 33
3 48 48
4 47 526
5 150 150
6 61 61
7 451 451
8 29 29
9 52 52
10 38 38
11 137 137
12 28 28
13 40 91
14 32 32
15 49 56
16 71 71
17 46 46
18 42 42
19 29 29
20 52 52

很奇怪,你再仔细检查一下,看看两个表的数据。
可以先选择一条数据测试一下。因为这样看语法什么的都没错。很有可能是表的数据造成的
------解决方案--------------------
楼主你确定执行的是你贴的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
1 68 68
2 33 33
3 48 48
4 47 526
5 150 150
6 61 61
7 451 451
8 29 29
9 52 52
10 38 38
11 137 137
12 28 28
13 40 91
14 32 32
15 49 56
16 71 71
17 46 46
18 42 42
19 29 29
20 52 52

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


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

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;

1 68 68 不相等
2 33 33 不相等
3 48 48 不相等
4 47 526 不相等
5 150 150 不相等
6 61 61 不相等
7 451 451 不相等
8 29 29 不相等
9 52 52 不相等
10 38 38 不相等
11 137 137 不相等
12 28 28 不相等
13 40 91 不相等
14 32 32 不相等
15 49 56 不相等
16 71 71 不相等
17 46 46 不相等
18 42 42 不相等

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

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



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