select *和select count(*)数量不一致
有一个表test,我用select * from test 有11条记录,但是用select count(*) from test只有6条记录
analyze table test compute statistics执行过了
把所有的索引也删掉重建了 还是没有效果
网上说要检查表有没有损坏,但是check table test在sql窗口和命令行都不识别 repair也不行
哪位大侠帮帮忙啊 谢谢了
------解决方案-------------------- 用create table as select * from test 重新建立一张表,再查看有多少条记录? 记录有重复,有空值么?
从来没碰到过这种问题...
------解决方案-------------------- 好诡异的,没见过,帮你顶,期待高人
------解决方案-------------------- 你是不是俩窗口查的,其中一个窗口插入数据后没有commit;
------解决方案-------------------- 探讨 你是不是俩窗口查的,其中一个窗口插入数据后没有commit;
------解决方案-------------------- 把表结构拿来。
------解决方案-------------------- 我估计是没有commit的原因。
------解决方案-------------------- 把数据贴出来看一下.
查询后,做个截图看看,太不可思议了。
------解决方案-------------------- 先确认问题是否是问题,不是操作或查询错误造成的。
------解决方案-------------------- 最有可能的,是有 空值。
------解决方案-------------------- 这种情况没有碰过。。如果块有损坏,你在查询中是会抛出错误的。
------解决方案-------------------- 即使有损坏 查询出来的数量也应该是一样的呀 可以直接查看表吧?
------解决方案-------------------- 应该是有空值的吧 是不是count的某个字段? 你用count(1)试试...
------解决方案-------------------- 探讨 引用: 你是不是俩窗口查的,其中一个窗口插入数据后没有commit; 同意
------解决方案-------------------- analyze table test compute statistics;
------解决方案-------------------- select num_rows from user_tables where table_name='test'
------解决方案-------------------- 估计也是楼上说的,你可能查询到的有部分数据没提交.
在同一个窗口中可以查询到不提交的数据,
再另外的窗口中只能查询提交后的数据.
------解决方案-------------------- 探讨 估计也是楼上说的,你可能查询到的有部分数据没提交. 在同一个窗口中可以查询到不提交的数据, 再另外的窗口中只能查询提交后的数据.
------解决方案-------------------- LZ到底是怎么操作的?如果真commit了,问题就蹊跷了
------解决方案-------------------- 探讨 LZ到底是怎么操作的?如果真commit了,问题就蹊跷了
------解决方案-------------------- 探讨 你是不是俩窗口查的,其中一个窗口插入数据后没有commit;
------解决方案-------------------- 估计是没有commit 但是不在同一个客户端操作的结果
------解决方案-------------------- 这是第一次见识这种情况