日期:2014-05-17  浏览次数:21663 次

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 但是不在同一个客户端操作的结果
------解决方案--------------------
这是第一次见识这种情况