2012-08-01 293 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?