php - 有没有数据库 数字 字段值连贯性检查工具?

 

问题描述:

数据库中有个字段是int类型,是个数字编号,字段名称 x_id

有个需求,需要知道这个字段中的值,是否有不正常的间隔,就是说有没有遗漏.
不一定是只间隔1也许是2或者再多点吧,需要找到的是那些数值间隔比较小的是遗漏,
正常的是会有间隔几千或者几万的,那是正常的间隔,不是遗漏。
当前是从小到大进行排序的,只是不知道有没有遗漏,也不知道有几个遗漏。

有没有什么好的方法进行判断?


 

第 1 个答案:

1.SQL查询:

SELECT id, 
       LAG(id) OVER (ORDER BY id) AS prev_id, 
       id - LAG(id) OVER (ORDER BY id) AS diff
FROM your_table

这个查询会返回每一行的id,前一行的id,以及两者之间的差值。你可以查看diff列来找出间隔超过预期的行。

2.Python脚本:

import pandas as pd
import sqlalchemy

# 创建数据库连接
engine = sqlalchemy.create_engine('mysql+pymysql://user:password@localhost:3306/dbname')

# 读取数据
df = pd.read_sql('SELECT id FROM your_table ORDER BY id', engine)

# 计算差值
df['diff'] = df['id'].diff()

# 找出间隔超过1的行
df[df['diff'] > 1]

 

第 2 个答案:

如果数据过多,检查成本比较高,不知道是用于什么业务


背景:不同的应用需要把不同的数据写入不同的表,所以规定了结构: Topic是应用ID、key是表名、value是具体数据主要需要实现的功能是:1.到达指定条数时,执行批量插入数据库,未 ...