php - 如何查找数组或 mySQL 表中丢失的数据?

标签 php mysql

我有一个充满值(twitter id)的数组,我想找到最低 id 和最高 id 之间缺失的数据?有兴趣分享一个简单的功能或如何做到这一点的想法吗?

另外,我想知道我是否可以对 mySQL 做同样的事情?我已将 key 编入索引。该表现在包含 250k 行,因此临时表和连接不会非常快或高效。我可以做一个 PHP 循环来循环数据,但这也会花费很长时间,并且占用大量内存。是否有我可以运行的特定 mysql 查询?或者我可以以某种方式使用上面的函数吗?

谢谢, 詹姆斯·哈蒂格 http://twittertrend.net

最佳答案

我有类似的需求,并编写了一个函数来返回缺失 ID 的列表。

---------------------------
create function dbo.FreeIDs ()
---------------------------
returns @tbl table (FreeID int)

as
begin

    declare @Max int
    declare @i int

    select @Max = MAX(ID) from [TheTable]
    set @i = 0

    while @i < @Max begin
          set @i = @i + 1
          if not exists (select * from [TheTable] where ID = @i) 
             insert into @tbl select @i
    end

    return

end

关于php - 如何查找数组或 mySQL 表中丢失的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364676/

相关文章:

php - register_shutdown_function 将引用转换为值?

php - 如何仅将当月的第一个和第三个星期二输入到 PHP 的表单字段中?

mysql - 在 loopback.io 中进行连接查询

mysql - 在 sql 脚本中插入之间的等待时间?

php - 在 Laravel 5.4 中找不到类 'NumberFormatter'

php - 带有表单选项问题的 Fine Uploader

php - 使用 htaccess 忽略链接的某些部分

mysql - 在 MY SQL 中使用多个 select 语句插入表

php - MySQL 和 PHP 中的特定用户类型

mysql - 使用 MySQL Regex - 匹配字符串的第一个单词和第二个字母