假设数据库表包含值
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
注意:此模式不是必需的(排序顺序和 1-30 的值)。
因此使用查询我可以获得 10-20 之间的值,依此类推。
但在这里我想知道如何从不同范围获取值。 即:
- 0-5 范围内的一个随机值
- 一个值的范围为 6-10
- 11-15 范围内的一个值
- 16-20 范围内的一个值
...等等。
因此查询的输出将如下所示:
[2,7,14,16,23,29,...]
或
[1,6,11,18,22,26,...]
有什么办法可以实现这个目标吗?
最佳答案
尝试一下
(SELECT id as r1 FROM `t1` WHERE id between 1 and 5 ORDER BY RAND() limit 0,1)
union
(SELECT id as r1 FROM `t1` WHERE id between 6 and 10 order by RAND() limit 0,1)
union
(SELECT id as r1 FROM `t1` WHERE id between 11 and 15 order by RAND() limit 0,1)
union
(SELECT id as r1 FROM `t1` WHERE id between 16 and 20 order by RAND() limit 0,1)
union
(SELECT id as r1 FROM `t1` WHERE id between 21 and 25 order by RAND() limit 0,1)
union
(SELECT id as r1 FROM `t1` WHERE id between 26 and 30 order by RAND() limit 0,1)
这是指定范围的查询,如果您想让它成为动态范围,您需要在拥有最多 N 的所有范围后动态地进行此查询。
关于mysql - 如何使用 SQL 查询从数据库表中获取离散范围内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721555/