如何可靠地计算MySQL中前面的行数?

如何可靠地计算MySQL中前面的行数?,mysql,sql,counting,Mysql,Sql,Counting,我想知道在MySQL中,如何在给定的ORDERBY子句中计算给定行的前面行数。 此外,行可能会随机插入,因此自动增量不可靠 MyAgenda - List ID FROM TO 32 2017-09-26 12:35:00 2017-09-26 13:35:00 33 2017-10-10 12:35:00 2017-10-10 13:35:00 32 2017-10-17 12:35:00 2017-10-17 13:35:00

我想知道在MySQL中,如何在给定的ORDERBY子句中计算给定行的前面行数。 此外,行可能会随机插入,因此自动增量不可靠

MyAgenda - List ID FROM TO 32 2017-09-26 12:35:00 2017-09-26 13:35:00 33 2017-10-10 12:35:00 2017-10-10 13:35:00 32 2017-10-17 12:35:00 2017-10-17 13:35:00 32 2017-10-24 12:35:00 2017-10-24 13:35:00 与本例类似,行是按From列排序的,但显然第34行是在第36行之前插入的,但在排序后36位于第34行之上,如果插入另一行37,则它可能位于任何行的上方或下方,甚至位于顶部。那么,如何在给定的ORDERBY子句中可靠地计算给定行上方的前面行数呢


尝试了子查询方法,但它在^2上,当行数很大时速度会非常慢。

首先,我建议不要只按一列排序 试试这个

ORDER BY From, ID
关于你的问题,我不确定我是否正确理解了这个问题,但在这种情况下,这个脚本可能会有所帮助

SELECT COUNT(*)
FROM your_table
WHERE From > @From
ORDER BY From, ID

这将统计记录36之前的记录:

select count(*)
from mytable
where from_date < (select from_date from mytable where id = 36);

这是SQL Server/MS Access语法,它不会返回前面的行数…因此没有更快的方法?没有。这怎么可能?根据一条记录,您必须找到以前的所有记录。唯一能加快速度的方法是在这里的from_date列中有问题的字段上建立索引。下次请不要发布图像,而是发布文本。这次我给你换了这个。