rand by order怎么检索掉某些ID为空的数据条

rand by order怎么检索掉某些ID为空的数据条

rand by order如何检索掉某些ID为空的数据条?

我有一个表,ID项自增,但是中间某些ID段曾经被删除过,所以总计29W条记录,最大的ID号是35W

现在用下面的语句随机,当ID号为某个数据库里已被删除的条目时,老是默认 ID = 22857 的记录(注:ID=14794 – ID=22856 已被删除)

SQL code


  
SELECT * FROM `my_table` AS r1 
JOIN (SELECT (FLOOR(RAND() * (SELECT MAX(id) FROM `my_table`))) AS id) AS r2 
WHERE r1.id >= r2.id
ORDER BY r1.id ASC 
LIMIT 1

加了 WHERE id!=’NULL’ AND id!=” 依旧没有效果,求助如何修改可以跳过不存在的ID?谢谢。

SQL code


  
SELECT * FROM `my_table` AS r1 
JOIN (SELECT (FLOOR(RAND() * (SELECT MAX(id) FROM `my_table` WHERE id!='NULL' AND id!=''))) AS id) AS r2 WHERE r1.id >= r2.id
ORDER BY r1.id ASC 
LIMIT 1



这样没办法,因为你的是整段的ID被清除 ID=14794 – ID=22856 这样不是平均分布,无法利用RAND随便来查询ID。 你需要用其它算法。如果你的表结果中是固定已知少了这一段,则可以跳过这一段。




如何重编 auto increase 的 ID号?

备份数据->清空表->ALTER TABLE dd AUTO_INCREMENT = 1->导入数据




引用汗~~问题是我的表少的不止这一段,万能的狼头大哥,其它算法是指什么?有没有可用的代码?




如果这个表中的ID与其它表没有关联,则可以使用这种方法。

rand by order怎么检索掉某些ID为空的数据条

相关文章:

你感兴趣的文章:

标签云: