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.到达指定条数时,执行批量插入数据库,未 ...