猿问

在MySQL中创建“数字表”

我正在尝试在MySQL中生成一个连续数字的大表。


我只想要2列; 主键和数字列,范围为0-X,其中X非常大。约。64,000行应该这样做。我试过这段代码没有成功:


CREATE TABLE numbers (

   number           INT         NOT NULL

   CONSTRAINT XPKnumbers

      PRIMARY KEY CLUSTERED (number)

    )


INSERT INTO numbers (number) VALUES (0)


DECLARE @i          INT

SET @i = 20


WHILE 0 < @i

   BEGIN

      INSERT INTO numbers (number)

         SELECT number + (SELECT 1 + Max(number) FROM numbers)

            FROM numbers


      SET @i = @i - 1

   END


SELECT * FROM numbers

我收到此错误:


#1064 - 您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在'CONSTRAINT XPKnumbers PRIMARY KEY CLUSTERED(数字)附近使用正确的语法。在第3行插入n'


有人建议让这项工作吗?


慕容森
浏览 688回答 3
3回答

白板的微信

您在列和约束声明之间缺少逗号:CREATE TABLE numbers (&nbsp; &nbsp;number&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;INT&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NOT NULL,&nbsp; &nbsp;CONSTRAINT XPKnumbers&nbsp; &nbsp; &nbsp; PRIMARY KEY CLUSTERED (number)&nbsp; &nbsp; )

慕桂英4014372

从MySQL 8.0开始,您可以使用RECURSIVE CTE生成计数表:SET @@cte_max_recursion_depth&nbsp; = 5000;WITH RECURSIVE cte AS(&nbsp; &nbsp;SELECT 1 AS i&nbsp; &nbsp;UNION ALL&nbsp; &nbsp;SELECT i+1&nbsp; &nbsp;FROM cte&nbsp; &nbsp;WHERE i < 3000)SELECT *FROM cte;
随时随地看视频慕课网APP
我要回答