【问题标题】:How to insert multiple rows into MySQL如何在 MySQL 中插入多行
【发布时间】:2018-04-24 23:44:27
【问题描述】:

我是 MySQL 新手(刚刚使用 SQL Server),我想知道如何轻松创建多行!

我希望创建大约 300 行,所以我在网上找到的方法似乎不够实用..

在使用SQL Server的时候,你可以只用一个GO语句,然后输入一个数字,就会多次运行该命令,比如:GO 50

在 MySQL 上有这么简单的东西吗?我已阅读有关使用循环语句的信息,但找不到任何信息?

任何帮助将不胜感激!

谢谢,

-利亚姆。

【问题讨论】:

标签: mysql insert


【解决方案1】:

您可以创建一个重复语句:

DELIMITER //

CREATE FUNCTION CalcularSueldo ( starting_value INT )
RETURNS INT

BEGIN

   DECLARE sueldo INT;

   SET sueldo = 0;

   label1: REPEAT
     SET sueldo = sueldo + starting_value;
   UNTIL sueldo >= 10000000 
   END REPEAT label1;

   RETURN sueldo;

END; //

DELIMITER ;

它基本上是一个循环,您可以在其中使用 UNTIL 放置条件。在这里它被用在一个函数中,但你可以根据自己的需要调整它。

【讨论】:

  • 嗨尼克,我应该在哪里插入代码来插入我的数据?我相信我的代码是这样的: INSERT INTO mysqltest.noderedtest (Password) VALUES "Test" - 类似的东西。
【解决方案2】:

您可以使用 Excel 准备数据,导出为 CSV 并通过 DBeaver 和 Sql Squirrel 等常用数据库工具导入数据库

https://github.com/dbeaver/dbeaver/issues/722

【讨论】:

    【解决方案3】:

    不使用循环:

    CREATE TABLE noderedtest(Password TEXT, Email TEXT);
    
    INSERT INTO noderedtest (Password, Email)  -- storing password in clear text
                                               -- is very bad idea
    WITH RECURSIVE cte AS
    (
       SELECT 1 AS i
       UNION ALL
       SELECT i+1
       FROM cte
       WHERE i < 300
    )
    SELECT 'Test', 'email@email.com'
    FROM cte;
    
    SELECT * FROM noderedtest;
    

    DBFiddle Demo MySQL 8.0+

    【讨论】:

    • 您好,我尝试了这段代码,但它在代码的“WITH”部分给了我一个错误。错误是 - “语法错误:意外的'WITH'(with)。任何想法为什么会发生这种情况?谢谢。
    • @LiamBroughton SELECT @@version 我的代码适用于 MySQL 8.0 及更高版本
    猜你喜欢
    • 2020-02-29
    • 2022-01-17
    • 2011-10-16
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多