我有一个 sql 查询,其中我计算行数
SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1
我将一些行更改状态更新为“approvato”,有时 count() 给我正确的数字,有时它给我旧的数字
这是我的日志:
2012-03-23T10:42:45+01:00 DEBUG (7): Row id = 1809
2012-03-23T10:42:45+01:00 DEBUG (7): SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1
2012-03-23T10:42:45+01:00 DEBUG (7): Result = 140
...change stato into 'approvato' thus count must give me 141 next time, requery the row, check changes are saved
2012-03-23T10:44:52+01:00 DEBUG (7): Row id = 1810
2012-03-23T10:44:52+01:00 DEBUG (7): SELECT count(*) AS `nr` FROM `ordine` WHERE (ditta_id = '3') AND (YEAR(`data`) = '2012') AND (stato = 'approvato' or stato = 'consegnato') LIMIT 1
2012-03-23T10:44:52+01:00 DEBUG (7): Result = 140 ?!!! why not 141?
ditta_id、agente_id、stato 是索引
我正在使用 Zend Framework 1.11.11 和 MySQL 5.1.49-3
最佳答案
对于您更新的行,我假设以下条件之一为真...
ditta_id
不是'3'
YEAR(数据)
不是'2012'
stato
已经是'approvato'
stato
已经是'consegnato'
stato
中的新值有拼写错误
您能否在更改 stato
字段之前和之后向我们展示这些字段?
关于mysql - select count(*) 结果错误,缓存还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869850/