【问题标题】:How to add sequential numbers to an empty SQL table如何将序号添加到空的 SQL 表
【发布时间】:2017-07-21 16:39:27
【问题描述】:

我正在尝试将从 1 到 200M 的序列号添加到空 SQL 表中。数字太大,无法用 Excel 列出。我也在使用文件大小限制较低的 Cpanel。有什么方法可以使用 sql 查询来做到这一点? (注意:其他帖子已经给出了示例代码,但它们似乎不是可以在 cpanel 中使用的标准 SQL 查询。)

我们将不胜感激。

【问题讨论】:

标签: mysql sql cpanel


【解决方案1】:

最简单的方法是使用information_schema.columns 视图。
简单的SQLFiddle demo 100.000 行(只有 10 万行,因为我不想杀死 SQLFiddle) - 只需要几秒钟:

SELECT @x:=@x+1
FROM (SELECT @x:=0) xx,
information_schema.columns a,
information_schema.columns b,
information_schema.columns c,
information_schema.columns d
LIMIT 10000;

如果您的数据库有 100 列,那么 4 个表的交叉连接可以得到 100^4 = 100000000 潜在行,这比您需要的要多得多。

【讨论】:

    【解决方案2】:

    迭代解决方案是:

    BEGIN
    DECLARE @Counter int=0
    WHILE @Counter <= 2000000
        BEGIN
        INSERT tableName(columnName)
        VALUES (@Counter)
        SET @Counter=@Counter+1
        END
    END
    

    此解决方案的缺点是它将对您的数据库执行 200 万条插入语句。

    【讨论】:

    • 谢谢你。请原谅我的经验不足,但“DECLARE”似乎不是 Cpanel 识别的命令。我正在输入您建议的命令,方式与通常输入查询的方式相同。
    • 根据dev.mysql.com/doc/refman/5.7/en/declare.html,看起来在 MySQL 中 DECLARE 需要位于 BEGIN...END 块内
    • 啊!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 2013-11-30
    • 2021-09-26
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多