6

我可以在 MySQL INSERT 查询上使用 LIMIT 2 吗?例如

INSERT INTO MyTable
   (user_name,password)
VALUES
   (john,366543),
   (sam,654654)
LIMIT 2

我试过了,它的说法

`#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 2' at line 1`
4

6 回答 6

8

您可以使用INSERT ... SELECT 语法执行此操作:

INSERT INTO MyTable (user_name, password)
SELECT 'john', '366543'
UNION ALL SELECT 'sam', '654654'
LIMIT 2;

不知道你为什么想要。也许如果你有一个很长的静态值列表,你想通过设置限制来轻松控制?

正如 pst 在现已删除的评论中指出的那样, theLIMIT实际上是 的一部分SELECT,与自身无关INSERT

于 2012-08-01T21:58:03.543 回答
1

大多数情况下,如果我们从另一个表中插入数据,那么我们需要设置限制以插入特定数量的数据

     insert into cas_user (cas_name) select cas_name from users limit 1,5;

希望这会有所帮助。

于 2017-04-10T12:36:16.333 回答
1

如果您试图通过使用限制来分批插入大量数据,那么您是在 MySQL 规定的初始约束范围内操作的。

尝试增加约束的值而不是:PFB

变量:max_allowed_pa ​​cket 、bulk_insert_buffer_sizekey_buffer_size

要显示和设置的示例查询:

show variables like 'max_allowed_packet';
SET GLOBAL max_allowed_packet=524288000;

参考资料: http:
//forums.mysql.com/read.php?20,161869

MySQL - 我可以在一个 INSERT 语句中插入多少行?

于 2017-05-09T08:01:32.760 回答
0

LIMIT 2 仅适用于选择无值

于 2012-08-01T21:55:38.997 回答
-1

我知道这是一篇旧文章,但您可以使用 foreach 循环来限制插入语句。就像是:

    $i = '1';   
    foreach($item as $item){
        IF($i <= '2'){
            IF ($stmt = $connection->prepare("INSERT IGNORE INTO `db`.`table`( `item`) VALUES (?)")) {

                /* Bind our params */
                $stmt->bind_param('s' , $item);

                $stmt->execute();

                $stmt->close();
            }
        }
        $i++;
    }
于 2016-07-15T20:24:21.797 回答
-3

不,您不能在插入查询中使用限制

于 2016-04-29T14:15:04.170 回答