让我们说我们有一个支持软件,客户可以在它满员时排队等候。对于队列中的每个客户,队列索引将随着++ n而增加。 索引0表示您不再处于队列中。
但是,在客户选择离开队列的情况下,他之后的另一个客户的队列索引不会减少。让我们说他的指数是3,并且总共有5个客户在线。
表示:1,2,3,4,5
导致 - > 1,2,4,5
那真是太可怕了。相反,我希望它能够正确地纠正队列的其余部分并减少舱口上方的所有人,直到不再有舱口。
如何使用SQL语法更正队列顺序,检查是否有任何填充,如果有,请更正它?
答案 0 :(得分:2)
请勿触摸桌子。
使用查询,只需按增加的自动编号或调用时间(您可能也有)对队列进行排序,然后添加行计数器以显示队列。
答案 1 :(得分:1)
对于表名称队列,使用字段Customer和Position:
SELECT Queue.Customer, Queue.Position, (select count(customer) from Queue T where T.position<=Queue.Position) AS [Index]
FROM Queue
GROUP BY Queue.Customer, Queue.Position;
索引是新的队列位置,没有间隙。
显然,在向队列添加新人时,位置字段必须加1 - 您不能将Index + 1用作新客户的位置。