cer*_*nak 13 mysql range sequence
我需要在MySQL中选择整数范围.像这样的东西
SELECT RANGE(10,20) AS range;
回报
10, 11, 12, 13, 14, ..., 20
为什么?
我想从尚未注册的范围中选择随机电话号码.这是个主意.
SELECT RANGE(100000,999999) AS range FROM phone WHERE phoneNum <> range LIMIT FLOOR(100000 + RAND()*(899999);
您的查询问题:
range在WHERE子句中使用.它是一个别名,只会在执行WHERE子句后定义.<>.一般情况下你可以使用IN(...),但在特殊情况下你应该使用BETWEEN 100000 and 999999并避免使用RANGE函数. ORDER BY RAND().尝试使用此查询:
SELECT phoneNum, 100000 as rangeStart, 999999 AS rangeEnd
FROM phone
WHERE phoneNum NOT BETWEEN 100000 AND 999999
ORDER BY RAND()
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
如果你想找到一个不在你的表中的数字并且可用的数字不接近耗尽(比如少于80%被分配),一个好的方法是生成随机数并检查它们是否被分配,直到找到一个不是"T.
可能存在纯MySQL解决方案,但我认为它需要一些扭曲连接,随机和模数.