首页 > 数据库 > mysql教程 > 如何使用 SQL 生成两个给定值之间的数字序列?

如何使用 SQL 生成两个给定值之间的数字序列?

DDD
发布: 2025-01-20 03:06:10
原创
512 人浏览过

How Can I Generate a Sequence of Numbers Between Two Given Values Using SQL?

使用 SQL 生成数字范围

需要在 SQL 数据库中创建两个指定值(例如 1000 和 1050)之间的数字序列? 本文演示了使用 VALUESJOIN 操作的有效方法。

核心思想是使用VALUES生成一组数字,然后使用JOIN将它们组合成一个更大的范围。 这种方法可以通过扩展查询轻松扩展以生成数十万行。

这是一个紧凑的解决方案:

<code class="language-sql">WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1</code>
登录后复制

更明确的方法是:

<code class="language-sql">SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1</code>
登录后复制

这两个示例都可以通过添加 WHERE 子句进行自定义以生成特定范围。对于频繁使用,请考虑创建表值函数以实现可重用性。

以上是如何使用 SQL 生成两个给定值之间的数字序列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板