Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据MySQL中的“datetime”将当前记录与同一表中的下一个记录进行比较?_Mysql_Compare - Fatal编程技术网

如何根据MySQL中的“datetime”将当前记录与同一表中的下一个记录进行比较?

如何根据MySQL中的“datetime”将当前记录与同一表中的下一个记录进行比较?,mysql,compare,Mysql,Compare,问题:我将使用Sakila示例数据库和it数据来解释这个问题,这样对您来说就更容易了。好的,我的问题是,我如何用“日期时间”来比较同一个表中的当前记录和下一个记录。这是表格的外观: payment_id customer_id staff_id rental_id amount payment_date last_update 1 1 1 76 2.99 25/05/2005 11:30:37 15/02/2006 22:12:30 2

问题:我将使用Sakila示例数据库和it数据来解释这个问题,这样对您来说就更容易了。好的,我的问题是,我如何用“日期时间”来比较同一个表中的当前记录和下一个记录。这是表格的外观:

 payment_id  customer_id     staff_id    rental_id   amount  payment_date    last_update

1   1   1   76       2.99   25/05/2005 11:30:37 15/02/2006 22:12:30
2   1   1   573      0.99   28/05/2005 10:35:23 15/02/2006 22:12:30
3   1   1   1185     5.99   15/06/2005 00:54:12 15/02/2006 22:12:30
4   1   2   1422     0.99   15/06/2005 18:02:53 15/02/2006 22:12:30
5   1   2   1476     9.99   15/06/2005 21:08:46 15/02/2006 22:12:30
使用此示例中的上述解释,对于每个“员工id”,如何使用“当前”和“下一个”的“付款日期”将当前行与下一行进行比较,这样它只会带来一对记录,其中当前记录的金额与下一个记录的金额相同,比如current.amount=next.amount。这意味着每个记录都应该与下一个相同的“员工id”进行比较,以此类推

我目前正在使用这个查询,它完成了这项工作,但它需要永远。我知道它工作得很好,因为我设置了限制3,它带来了正确的限制。如果您有Sakila示例数据库,您也可以测试它:

SELECT * FROM payment a 
JOIN payment b ON a.staff_id = b.staff_id AND a.payment_date > b.payment_date AND a.amount =         b.amount
LEFT JOIN payment c ON a.staff_id = c.staff_id AND c.payment_date < a.payment_date AND    c.payment_date > b.payment_date
WHERE c.payment_id IS NULL
LIMIT 3;

您能帮助我吗?

您看过相关子查询了吗?它也可能很慢,但可能比那些连接更快……既然你有一个工作查询,你有没有尝试过优化它?@JohnRuddell Hi,我在相关子查询中遇到的问题是,它不会带来成对的记录。我需要两张匹配的唱片。AgRizzo我该怎么做?使用EXPLAIN命令确保您使用的是index@AgRizzo这就是我通过在上面的查询中添加EXPLAIN得到的结果,我无法正确格式化它:id、select_type、table、type、可能的_键、key、key_len、ref、rows、Extra'1'、SIMPLE、'a'、'ALL'、'idx_fk_staff_id',NULL、NULL、NULL、'16086',NULL'1'、'SIMPLE',‘b’、‘ref’、‘idx_-fk_-staff_-id’、‘idx_-fk_-staff_-id’、‘1’、‘sakila.a.staff_-id’、‘4021’、‘使用where’1’、‘SIMPLE’、‘c’、‘ref’、‘idx_-fk_-staff_-id’、‘idx_-fk_-fk_-staff-id’、‘1’、‘sakila.a.staff_-id’、‘402;“不存在”