检查 mysql ID 跳过 php
假设在 mysql 中我有一个 id 列,只是 int 自动增量。
有什么方法可以使用 php 告诉我何时有一个 id 被删除吗?
就像说我有
5 个 6 7 8 10
我需要它告诉我 9 丢失了,并对所有 id 继续执行此操作。有什么办法可以做到这一点吗?
谢谢
say in mysql I have a column that's id, just int auto increment.
Is there any way I can use php to tell me when there is an id that's been removed?
Like say i have
5
6
7
8
10
I need it to tell me that the 9 is missing, and continue this for all the id's. Is there any way to do this?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要一个包含所有值的表。然后很容易进行左连接来查找丢失的 id。
You need a table that contains all values. Then it's simple to do a left join to find missing ids.
这是一种方法:
1. 从表中选择所有 ID。
2. 将它们全部分配给 %hash:
5=> 1
6=> 1
7=> 1
8=> 1
10=> 1
所以你的 ID 是哈希的键,值为 1。
for (my $i = 1; $i < 11; $i++)
{
if($hash{$i} != 1)
{
打印“ID $i 丢失\n”;
}
}
这是 Perl 语法,但 PHP 应该非常相似。
Here is one way to do it:
1. Select all IDs from the table.
2. Assing them all to a %hash:
5 => 1
6 => 1
7 => 1
8 => 1
10 = > 1
So your ID is a key of the hash and the value is 1.
for (my $i = 1; $i < 11; $i++)
{
if($hash{$i} != 1)
{
print "ID $i is missing \n";
}
}
This is Perl syntax, but PHP should be pretty similar.
如果您可以忍受数据库中第一个 id 之前没有间隙(以及使用 '临时表'、'文件排序'和'连接缓冲区'):
独立示例:
打印
If you can live with not getting a gap before the first id in the database (and a query using 'temporary table', 'filesort' and 'join buffer'):
self-contained example:
prints