我想知道如何在MySQL的给定order by子句中计算给定行的前一行数。 行也可以随机插入,因此auto_increment不可靠。
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,则它可以在任何行的上方或下方,或者甚至在顶部。那么,如何按给定的顺序依次计算给定行上方的前一行数?
尝试使用子查询方法,但它是O(n ^ 2),当行数很大时会非常缓慢。
答案 0 :(得分:0)
首先,我建议不要仅按一列排序 试试这个
ORDER BY From, ID
关于你的问题,不确定我是否正确理解了这个问题,但在这种情况下,这个脚本可能会有所帮助
SELECT COUNT(*)
FROM your_table
WHERE From > @From
ORDER BY From, ID
答案 1 :(得分:0)
这会在记录#36之前计算记录:
select count(*)
from mytable
where from_date < (select from_date from mytable where id = 36);