2012-08-01 10 views
6

Kann ich LIMIT 2 für die MySQL INSERT-Abfrage verwenden? z.B.Verwenden Sie "LIMIT" in einem MySQL "INSERT"?

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

Ich habe versucht, und seine sagen

`#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` 

Antwort

0

LIMIT 2 nur mit ausgewählten keine Arbeitswerte

7

Man könnte dies die INSERT ... SELECT syntax mit tun:

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

nicht sicher, warum du würdest vielleicht ... wenn du eine sehr lange Liste von statischen Werten hättest, die du wünschst durch das Setzen des Limits leicht zu steuern?

EDIT: Als pst Noten, ist die LIMIT tatsächlich ein Teil des SELECT, und hat nichts mit dem INSERT selbst zu tun ...

+0

@pst Danke für die Anregung; Ich habe die Antwort aktualisiert, um dies zu notieren ... –

+1

Sie würden denken, es wäre offensichtlich, oder? Wenn Sie die Menge der einzufügenden Daten begrenzen möchten, geben Sie nicht so viele Werte an. "LIMIT" in einem Aufruf von "INSERT INTO ... SELECT FROM" ist relevant, wie hier gezeigt. – tadman

+0

LIMIT kann auch mit UPDATE und DELETE verwendet werden. Es ist also nicht nur Teil von SELECT. – Andrew

-2

nicht Sie können nicht Limit in Abfrage einfügen verwenden

-1

Ich weiß, Es ist ein alter Beitrag, aber Sie können die foreach-Schleife verwenden, um die INSERT-Anweisung einzuschränken. Etwas wie:

$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

Meistens Wenn wir Einfügen von Daten aus einer anderen Tabelle, dass die Zeit, die wir brauchen Limit zu setzen, um bestimmte Anzahl von Daten

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

Hoffnung Einfügen dies helfen wird.

0

Wenn Sie versuchen, riesige Datenmengen mithilfe von limit in Teile einzufügen, arbeiten Sie innerhalb der von MySQL festgelegten anfänglichen Einschränkungen.

Versuchen Sie, die Werte der Zwänge zunehmenden eher: PFB

Variablen: max_allowed_packet, bulk_insert_buffer_size, key_buffer_size

Beispielabfragen zu zeigen, und setzen:

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

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

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