2012-08-01 292 views
6

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

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` 

回答

0

LIMIT 2将只选择没有工作价值

7

你可以做到这一点使用的INSERT ... SELECT syntax

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

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

编辑: 作为PST笔记中,LIMIT实际上是SELECT的一部分,并没有任何与INSERT本身...

+0

@pst感谢您的建议;我已经更新了答案,注意到这个...... – 2012-08-01 22:02:31

+1

你会认为这很明显,对吧?如果您想限制您插入的数据量,请不要提供更多的值。 “INSERT INTO ... SELECT FROM”调用中的“LIMIT”与此处演示的相关。 – tadman 2012-08-01 22:15:40

+0

LIMIT可以与UPDATE和DELETE一起使用。所以它不是SELECT的一部分。 – Andrew 2014-06-22 08:09:27

-2

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

-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++; 
    } 
0

晴如果我们从另一个表的时间,我们需要限制设置为插入数据

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

希望这将有助于具体的数字插入数据。

0

如果您尝试通过使用限制在部分中插入大量批量数据,则您正在MySQL规定的初始约束内运行。

尝试增加约束的值,而:PFB

变量:max_allowed_pa​​cket个bulk_insert_buffer_size的key_buffer_size

示例查询显示和设置:

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

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

MySQL - how many rows can I insert in one single INSERT statement?