Mysql 尝试从日期彼此距离小于5分钟的行中删除

Mysql 尝试从日期彼此距离小于5分钟的行中删除,mysql,group-by,Mysql,Group By,我需要计算MySQL表中的所有行,忽略具有相同agent和msisnd列和日期的记录,它们之间的距离小于5分钟。 比如说, id type agent msisdn date 2706 jurnal EC_Catalin.Silvan 745844472 2011-02-18 18:31:54 63535 item EC_Adelina.Gartan 766699747 2011-02-22 18:42:15 56513 i

我需要计算MySQL表中的所有行,忽略具有相同
agent
msisnd
列和日期的记录,它们之间的距离小于5分钟。 比如说,

id     type    agent              msisdn     date
2706   jurnal  EC_Catalin.Silvan  745844472  2011-02-18 18:31:54
63535  item    EC_Adelina.Gartan  766699747  2011-02-22 18:42:15
56513  item    EC_Adelina.Gartan  766733667  2011-02-24 17:13:31
56372  item    EC_Adelina.Gartan  766733667  2011-02-24 17:12:01
查询应该返回COUNT=3,因为id为56513和56372的行彼此有结束日期

到目前为止,我得到了这个查询,但它不起作用

SELECT `calls_count_pre`.*
    FROM `calls_count_pre`
    LEFT JOIN `calls_count_pre` AS `temp` ON (`calls_count_pre`.`id` = `temp`.`id`)
WHERE
    (MINUTE(TIMEDIFF(`calls_count_pre`.`date`, `temp`.`date`)) <= 5 AND HOUR(TIMEDIFF(`calls_count_pre`.`date`, `temp`.`date`)) = 0)
    AND `calls_count_pre`.`msisdn` = `temp`.`msisdn`
    AND `calls_count_pre`.`agent` = `temp`.`agent`
ORDER BY `calls_count_pre`.`agent`, `calls_count_pre`.`msisdn`, `calls_count_pre`.`date` DESC
选择'calls\u count\u pre'*
来自'calls\u count\u pre`
左键将'calls\u count\u pre'作为'temp'打开('calls\u count\u pre`.'id`='temp`.'id`)
哪里

(分钟(TIMEDIFF(`calls\u count\u pre`.`date`,`temp`.`date`))您使用自联接的方法是正确的,但我认为您可能加入了错误的列。我认为您还需要一个
分组依据

试着做一些更像这样的事情:

SELECT calls_count_pre.*
   FROM calls_count_pre
   LEFT JOIN calls_count_pre AS temp
        ON calls_count_pre.msisdn = temp.msisdm AND calls_count_pre.agent = temp.agent
        AND temp.date > calls_count_pre.date
        AND DATESUB(temp.date, INTERVAL 5 MINUTE) < calls_count_pre.date
GROUP BY calls_count_pre.agent
SELECT calls\u count\u pre*
从呼叫\u计数\u预
左连接调用\u计数\u预处理为临时
在调用\u count\u pre.msisdn=temp.msisdm和调用\u count\u pre.agent=temp.agent时
和临时日期>调用\u count\u pre.date
和DATESUB(临时日期,间隔5分钟)
如果我使用此查询,仍将返回所有行…此外,我无法使用GROUP BY,因为我需要查看执行查询后生成的行数。谢谢您的回复