我将用一个类比来解释这个问题,只是为了简化解释。
假设在一个游戏中你有一个可以制造弓箭手和骑兵的建筑。你先订购5名弓箭手,然后订购3名骑兵,然后再订购4名弓箭手。
在本例中,我有一个MySQL表,其中包含:
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT
`buildingid` INT UNSIGNED NOT NULL
`unit` ENUM('Archer','Cavalry') NOT NULL
`complete` TIMESTAMP NOT NULL
现在我想显示订单队列中的单位。这种风格的大多数游戏将简单地展示5个弓箭手,3个骑兵,和4个其他弓箭手在一行。但由于我不想限制排队的长度,对于更大的订单(比如200个弓箭手)来说,这可能会非常混乱
我想让MySQL返回
buildingid, unit, count, next
,其中“count”是单元数,“next”是将完成的最早单元的时间戳。
我需要一个
GROUP BY
询问,这将把所有的弓箭手聚集在一起,而不考虑中间的骑兵。我需要一种按单元类型分组的方法,仅限于连续的条目。
我之前的尝试是成功的,但当我测试订购1000台时,服务器完全崩溃了。
我希望我能解释清楚我要做的事。。。