找出 MySQL 中缺失的行

发布于 2024-12-04 09:40:10 字数 111 浏览 1 评论 0原文

我有一个表,最终会通过删除记录而丢失一行。

我如何检查该表中缺少的行,然后在 PHP 中填充该缺少的行。

我猜它使用循环,但是我只是无法找出使用

干杯的正确循环

I have a table that will eventually get a row missing through deletion of records.

How could I check for that missing row in that table then fill this missing row in PHP.

I guess its using looping however I just cant work out the correct loop to use

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲鸠 2024-12-11 09:40:10

查找序列中缺失项的一种方法是比较 count(*) 和 max(id)。
它应该让您了解丢失了多少个,然后开始包括您在二分搜索中检查的范围。

另一种方法是迭代按 id 排序的行,并在序列跳转时触发插入。

$lastId = 0;
foreach ($rows as $row)
{
    if ($lastId + 1 != $row['id']) {
        fillInRows($lastId + 1, $row['id'] -1);
    }
    $lastId = $row['id'];
}

function fillInRows($min, $max)
{
   for ($i = $min; $i <= $max; $i++) {
       // exercise left for the reader
   }
}

One way to find a missing item in a sequence is to compare count(*) and max(id).
It should give you an idea of how many are missing, then start including ranges that your checking as in a binary search.

Alternate way is just iterate over the rows ordered by id, and trigger your insert when the sequence jumps.

$lastId = 0;
foreach ($rows as $row)
{
    if ($lastId + 1 != $row['id']) {
        fillInRows($lastId + 1, $row['id'] -1);
    }
    $lastId = $row['id'];
}

function fillInRows($min, $max)
{
   for ($i = $min; $i <= $max; $i++) {
       // exercise left for the reader
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文