MySQL查询计数不正确

MySQL查询计数不正确,mysql,select,Mysql,Select,我有一个电话数据库,它有一个字段“direction”,以电话的输入或输出方向命名。我的问题是,当我搜索“输入”或“输出”电话时,号码完全错误 例如: 五月份,, 传入和传出呼叫总数:13622 电话:12637 外出电话:985 SELECT `start`, `direction`, `ref_id` FROM `call_list` WHERE `did` = 'xxxx' AND `start` >= '2013-05-01 00:00:00' AND `start

我有一个电话数据库,它有一个字段“direction”,以电话的输入或输出方向命名。我的问题是,当我搜索“输入”或“输出”电话时,号码完全错误

例如: 五月份,, 传入和传出呼叫总数:13622 电话:12637 外出电话:985

SELECT `start`, `direction`, `ref_id` 
FROM  `call_list` 
WHERE  `did` = 'xxxx' 
AND  `start` >= '2013-05-01 00:00:00' 
AND  `start` < '2013-06-01 00:00:00'
以上是基于将上述查询转储到CSV并实际查看列表的准确计数。但是,当我添加“方向”搜索时,返回的数字完全关闭:

SELECT `start`, `direction`, `ref_id` 
FROM  `call_list` 
WHERE  `did` = 'xxxx' 
AND  `start` >= '2013-05-01 00:00:00' 
AND  `start` < '2013-06-01 00:00:00' 
AND `direction` = 'In'
…将导致总计数为13461,并且

SELECT `start`, `direction`, `ref_id` 
FROM  `call_list` 
WHERE  `did` = 'xxxx' 
AND  `start` >= '2013-05-01 00:00:00' 
AND  `start` < '2013-06-01 00:00:00' 
AND `direction` = 'Out'
…产生的总计数为11018

因此,如果我是一组:

SELECT `direction`, count(*)
FROM  `call_list` 
WHERE  `did` =  'xxxx'
AND  `start` >=  '2013-05-01 00:00:00'
AND  `start` <  '2013-06-01 00:00:00'
GROUP BY `direction`
…我得到了正确的计数,这一切都很好,除了有时我需要分别对“输入”或“输出”计数运行查询,因此我的数字是关闭的

“方向”列是varchar3 utf8\u unicode\u ci

如果有人能告诉我为什么我会收到流浪汉数量,我会非常感激


提前感谢

一个猜测,但导致行数比预期多或少的一个常见原因是在WHERE条件中使用or,而没有正确的括号

例如

那应该是

SELECT `start`, `direction`, `ref_id` 
  FROM  `call_list` 
WHERE  (`did` = 'xxxx' OR `did` = 'yyyy') 
  AND  `start` >= '2013-05-01 00:00:00' 
  AND  `start` < '2013-06-01 00:00:00' 
  AND `direction` = 'In'

这里是演示

您有方向为空的记录吗?不,只有“In”和“Out”才能生成SQL小提琴?您没有告诉我们的东西。。。这表明您的查询工作正常。您是否有机会将此表与实际查询中的其他表连接起来?当然,从call_列表中选择DISTINCTdirection,您只会得到2个结果。哇,您完全正确。真不敢相信我错过了那个。我有一个foreach进行查询,我正在查看的一个有多个没有尾随括号或前导括号的did值,但我只使用一个did值手动进行搜索。非常感谢你的帮助@你很受欢迎:BTW,你可以考虑使用,而不是多个OR,比如……在XXXX,YYYY,…这可能会简化你的生活一点。
SELECT `start`, `direction`, `ref_id` 
  FROM  `call_list` 
WHERE  (`did` = 'xxxx' OR `did` = 'yyyy') 
  AND  `start` >= '2013-05-01 00:00:00' 
  AND  `start` < '2013-06-01 00:00:00' 
  AND `direction` = 'In'