MySQL中的SELECT整数范围.例如.1,2,3,4,...,N;

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);

Ali*_*aru 9

您的查询问题:

  1. 您不能range在WHERE子句中使用.它是一个别名,只会在执行WHERE子句后定义.
  2. 即使您可以使用它,使用数字与一组数字进行比较也没有意义<>.一般情况下你可以使用IN(...),但在特殊情况下你应该使用BETWEEN 100000 and 999999并避免使用RANGE函数.
  3. 如果你只想要一个数字,那么限制应该是1,而不是随机的.通常选择您使用的随机物品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解决方案,但我认为它需要一些扭曲连接,随机和模数.