当前位置: 首页 > 面试题库 >

SQL SELECT获取前N个正整数

卫皓
2023-03-14
问题内容

我需要获取一个包含前N个正整数的结果集。是否可以仅使用标准SQL SELECT语句来获取它们(不提供任何计数表)?

如果不可能,是否有任何特定的MySQL方法来实现?


问题答案:

似乎您想要的是一个dummy rowset

在中MySQL,没有表是不可能的。

大多数主要系统都提供了一种实现方法:

  • Oracle

    SELECT  level
    

    FROM dual
    CONNECT BY
    level <= 10

  • SQL Server

    WITH    q AS
        (
        SELECT  1 AS num
        UNION ALL
        SELECT  num + 1
        FROM    q
        WHERE   num < 10
        )
    

    SELECT * FROM q

  • PostgreSQL

    SELECT  num
    

    FROM generate_series(1, 10) num

MySQL 缺少这样的东西,这是一个严重的缺点。

我写了一个简单的脚本来为博客文章中的示例表生成测试html" target="_blank">数据,也许会有用:

CREATE TABLE filler (
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
) ENGINE=Memory;

CREATE PROCEDURE prc_filler(cnt INT)
BEGIN
        DECLARE _cnt INT;
        SET _cnt = 1;
        WHILE _cnt <= cnt DO
                INSERT
                INTO    filler
                SELECT  _cnt;
                SET _cnt = _cnt + 1;
        END WHILE;
END
$$

您调用该过程,表格将被数字填充。

您可以在会话期间重用它。



 类似资料:
  • 问题内容: 做到这一点的最佳方法是什么? 问题答案: 使用 array_slice() 这是PHP手册中的一个示例:array_slice 只有一个小问题 如果数组索引对您有意义,请记住这将重置并重新排列 数字 数组索引。您需要设置标志来避免这种情况。(第4个参数,自5.0.2起可用)。 例: 输出:

  • 问题内容: 如何在PHP中获取字符串的前n个字符?将字符串修剪为特定数量的字符并在需要时附加“ …”的最快方法是什么? 问题答案: 更新: 基于检查长度的建议(并确保修剪后的和未修剪的琴弦的长度相似): 因此,您将获得最多13个字符的字符串;13个(或更少)普通字符或10个字符,后跟“ …” 更新2: 或作为功能: 更新3: 自从我写了这个答案已经有一段时间了,我实际上不再使用此代码了。我更喜欢这

  • 问题内容: 我正在使用Javascript(ES6)/ FaceBook进行反应,并尝试获取大小变化的数组的前3个元素。我想做相当于Linq take(n)。 在我的Jsx文件中,我有以下内容: 然后得到我尝试的前三个项目 这不起作用,因为地图没有设置功能。 你能帮忙吗? 问题答案: 我相信您正在寻找的是:

  • 问题内容: 我有一个简单的表,像这样: 我想获得每个用户出现的前2个“字母”, 甚至更好:崩溃成列 我怎样才能在postgres中做到这一点? 问题答案: = > SQL小提琴演示

  • 问题内容: 我正在尝试在Oracle中使用SQL获取逗号分隔的字符串中的第n个元素。 到目前为止,我有以下内容。 但是当元素为空时它不起作用,即,任何人都可以帮忙吗? 问题答案: 如果定界的值在逗号之间始终是字母数字,那么您可以尝试: 获取第七个值(包括结尾的逗号)。如果为空,则只需输入逗号(可以轻松删除)。 显然,如果您想要的值不是第七个,则将第四个参数值更改为想要的第n个出现率,例如 编辑:因

  • 返回数组的第n个元素。 使用 Array.slice() 获取数组的第 n 个元素。如果索引超出范围,则返回 [] 。省略第二个参数 n ,将得到数组的第一个元素。 const nthElement = (arr, n = 0) => (n > 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; nthElement(['a', 'b', 'c'], 1);