我需要获取一个包含前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);