Php 从MySql获取非顺序ID
我使用MySql跟踪图像,每个图像都分配了一个自动递增的ID。ID列在理论上也应该类似 (1,2,3,4,5,6) 可悲的是,在过去的两年里,由于节制的原因,我不得不删除行,我的ID列看起来更像 (1,3,4,7) 是否仍然可以获取缺少的ID,即: (2,5,6) 我在这里和其他各种论坛上搜索过,但我什么也没找到。我发现的唯一与我类似的答案是将我的ID列与另一个表的ID列进行比较,并找出差异。这是一个选项,但我的主表由25000行组成,所以这有点困难Php 从MySql获取非顺序ID,php,mysql,sql,auto-increment,Php,Mysql,Sql,Auto Increment,我使用MySql跟踪图像,每个图像都分配了一个自动递增的ID。ID列在理论上也应该类似 (1,2,3,4,5,6) 可悲的是,在过去的两年里,由于节制的原因,我不得不删除行,我的ID列看起来更像 (1,3,4,7) 是否仍然可以获取缺少的ID,即: (2,5,6) 我在这里和其他各种论坛上搜索过,但我什么也没找到。我发现的唯一与我类似的答案是将我的ID列与另一个表的ID列进行比较,并找出差异。这是一个选项,但我的主表由25000行组成,所以这有点困难 提前谢谢你 使用1到25000之间的整数创建
提前谢谢你 使用1到25000之间的整数创建临时表。然后对其进行左/右连接以查找缺少的ID。尝试:
SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
FROM table1 AS a, table1 AS b
WHERE a.id < b.id
GROUP BY a.id
HAVING start < MIN(b.id) ;
选择a.id+1作为开始,选择MIN(b.id)-1作为结束
表1为a,表1为b
其中a.id
给出样本数据和您想要的结果。@echo\u他给了我。该表包含
ID=1,3,4,7
,他想要2,5,6
,这些ID在序列中被跳过。@Barmar是的,我的意思是如果这些ID像他提到的那样以逗号分隔,或者它们在每一行中。他说这是一个自动递增的ID列。如果我的示例有点模糊,很抱歉,下面是一些示例数据:(4800',1',1367305200',NULL,0',20',0'),(4802',1',1367305200',NULL,0',16',0'),我希望得到4801的帮助!内存表将是最快的。也可以使用子查询生成数字范围。从中选择units.I+tens.I*10+1作为整数(当我选择工会时选择1工会选择2工会选择3工会选择4工会选择5工会选择6工会选择7工会选择8工会选择9工会选择0)单位交叉联接(当我选择工会时选择1工会选择2工会选择3工会选择4工会选择5工会选择6工会选择7工会选择8工会选择9工会选择0)十位数
积分: