【发布时间】:2015-09-07 09:45:41
【问题描述】:
是否有可能选择增量数字,例如:
num
1000
1001
1002
1003
1004
...
1999
我试过了:
set @i=999;
select @i:=@i+1 as num
limit 1000
还有:
set @i=999;
select @i:=@i+1 as num
where @i <1999;
【问题讨论】:
是否有可能选择增量数字,例如:
num
1000
1001
1002
1003
1004
...
1999
我试过了:
set @i=999;
select @i:=@i+1 as num
limit 1000
还有:
set @i=999;
select @i:=@i+1 as num
where @i <1999;
【问题讨论】:
你必须对一个 1000 行的表进行操作才能得到你想要的:
SELECT @i := @i+1 AS num
FROM (
SELECT 1 AS x UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 AS x UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
) AS t
CROSS JOIN (
SELECT 1 AS x UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 AS x UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
) AS s
CROSS JOIN (
SELECT 1 AS x UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 AS x UNION ALL
SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1
) AS u
CROSS JOIN (SELECT @i := 999) AS var
在 10 x 10 x 10 的表格组合上使用 CROSS JOIN,我们会得到一个 1000 行的内联表格。以此为基础,我们可以计算出所需的@i 值序列。
【讨论】:
@i 初始化,即从CROSS JOIN (SELECT @i := 999) 更改为CROSS JOIN (SELECT @i := 123450000)。此外,如果您想要 10,000 个数字而不是 1,000 个,则必须添加另一个 10 值的内联表,以便获得所需的 10,000 行的笛卡尔积。
INSERT INTO tbl (num) your_awesome_select
我假设(可能是错误的)您正在尝试根据自动递增的主键选择行,看到这是 MySQL 吗?
“BETWEEN”关键字会比使用变量更好用吗?
例如,如果您想从表 'myTable' 中选择行,并且 'num' 是主键:
SELECT num FROM myTable
WHERE num BETWEEN 999 AND 1999
【讨论】:
这是一个简单的查询,用于打印具有设定增量值的数字 1000 - 1999。
DECLARE @firstNumber INT
DECLARE @lastNumber INT
DECLARE @incrementBy INT
SET @firstNumber = 1000
SET @lastNumber = 1999
SET @incrementBy = 1
CREATE TABLE #TEMP ( number INT)
WHILE(@firstNumber <= @lastNumber)
BEGIN
INSERT INTO #TEMP VALUES (@firstNumber)
SET @firstNumber = @firstNumber + @incrementBy
END
SELECT * FROM #TEMP
DROP TABLE #TEMP
【讨论】:
code#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'WHILE(@firstNumber code 附近使用的正确语法