mysql - 在 MySQL 中选择整数范围。例如。 1,2,3,4,...,n;

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

最佳答案

您的查询有问题:

  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

如果你想找到一个不在你的表中的数字并且可用的数字没有接近耗尽(比如分配了不到 80%),一个好的方法是生成随机数并检查它们是否被分配,直到你找到一个不是。

可能存在纯 MySQL 解决方案,但我认为它需要一些扭曲连接、随机和模数连接。

关于mysql - 在 MySQL 中选择整数范围。例如。 1,2,3,4,...,n;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386425/

相关文章:

postgresql - 如何检查 PostgreSQL 9.3 中右侧的无限范围是否为 NULL - 确保使用 GIST 索引

r - 找到第一个序列剧集

python - 如何将 python 生成器更改为 Keras Sequence 对象?

php - 从日期值为 xxxx-xx-xx 的 sql 值中选择年份

mysql - 用户权限表结构

php - Echo 从 count(*) mysql 查询返回的值

mysql - MYSQL 查询上的 IF 语句 - IF 列的所有值都相同

Python 嵌套范围函数

mysql - 使用复合索引优化查询,即使用where

android - Android SounPool不重叠