我之前通读过其他类似的问题,但似乎没有人回答我的问题。如果这是对其他事情的重复,我深表歉意,但我似乎无法在其他地方找到这个问题的答案。
我有一个看起来或多或少像这样的数据库表:
编号 |网址 |标题 |剧集 |顺序 |创建于 |修改_at
这些用于将特定链接分配给播客剧集,它们按照 Sequence
所示的顺序显示。我已经构建了一个与表交互的 Laravel 框架,并且我能够通过操纵序列来更改事物的顺序,但是我在移除事物和维护序列以达到我想要的目的时遇到了麻烦。假设我在表中有以下四项内容:
id = 5, sequence = 1
id = 6, sequence = 3
id = 7, sequence = 2
id = 8, sequence = 4
当查看网站时,页面将按 id
5、7、6、8 的顺序列出它们。但是,如果我发现其中一个链接有问题,我会删除它,此时我可能会得到 id
5、7、8。序列将是 1、2、4。
我目前正在寻找一种在每集基础上“重新播种”序列列的方法。它基本上会获取具有特定 episode
的所有行,在 sequence
上按升序对它们进行排序,然后按升序“重新编号”。序列 = 1, 2, 4, 5, 7, 8, 9 将变为 1, 2, 3, 4, 5, 6, 7。
最佳答案
应该是比较简单的查询比如
select
YT.*
from
YourTable YT
where
YT.Episode = 'MO50'
order by
YT.Sequence
现在,如果您的序列由于任何原因而产生间隙,您总是可以实现一个 mySql 变量来递增,而不管实际序列是什么。尝试..
select
@tmpRow := @tmpRow +1 as NewSequence,
YT.*
from
YourTable YT,
( select @tmpRow := 0 ) sqlvars
where
YT.Episode = 'MO50'
order by
YT.Sequence
因此,即使给定节目“MO50”的实际序列是 2、3、8、12、15。实际列“NewSequence”将显示为 1、2、3、4、5。
现在,就是说,您仍将拥有原始的“ID”列作为编辑任何细节和/或根据需要删除剧集的基础……这对您有帮助吗?
关于php - 在 MySQL 记录中生成一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388799/