2010-02-28 4 views
7

funktioniert das nicht:Wie fügt man eine where-Klausel in eine MySQL-Insert-Anweisung ein?

INSERT INTO users (username, password) VALUES ("Jack","123") WHERE id='1'; 

Irgendwelche Ideen, wie durch id Einfügung einer bestimmten Zeile zu verengen?

+2

Downvoted. So wie es aussieht, ist entweder der Titel falsch oder die akzeptierte Antwort. Wie auch immer, Google führt mich hier für * einfügen *, aber die angenommene Antwort ist über * update *. –

Antwort

18

In einer Insert-Anweisung würden Sie eine vorhandene Zeile nicht haben, wo zu tun Claues auf? Sie fügen eine neue Zeile ein, wollten Sie eine Aktualisierung durchführen?

update users set username='JACK' and password='123' WHERE id='1'; 
+1

"Sie hätten keine bestehende Reihe, wo Sie weitermachen können?" Perfekte Antwort. –

+1

Ich möchte eine Where-Klausel für den Rest der Tabelle machen. ZB "einfügen ... wo count (..) <10". –

1

Ich denke, Sie suchen UPDATE und nicht einfügen?

UPDATE `users` 
SET `username` = 'Jack', `password` = '123' 
WHERE `id` = 1 
2

Versuchen Sie folgendes:

Update users 
Set username = 'Jack', password='123' 
Where ID = '1' 

Oder wenn Sie tatsächlich einzufügen versuchen:

Insert Into users (id, username, password) VALUES ('1', 'Jack','123'); 
0
INSERT INTO users (id,username, password) 
VALUES ('1','Jack','123') 
ON DUPLICATE KEY UPDATE username='Jack',password='123' 

Dies funktioniert nur, wenn das id Feld eindeutig ist/pk (nicht Composite-PK obwohl) Auch dies ein, wenn kein id des Wertes 1 gefunden wird und aktualisieren sonst den Datensatz mit id 1 wenn es das gibt.

3

Um eine WHERE-Klausel innerhalb einer INSERT-Anweisung einfach hinzuzufügen;

INSERT INTO table_name (column1,column2,column3) 
SELECT column1, column2, column3 FROM table_name 
WHERE column1 = 'some_value' 
+0

äh, könnten Sie etwas hinzufügen, was hier vor sich geht? Warum benötigt der Insert eine WHERE? – Martin

+1

Wen kümmert's * warum *? Die Frage war * "Wie fügt man eine Where-Klausel in eine MySQL-Insert-Anweisung ein?" * –

8

Ein bedingter Einsatz zur Verwendung typischerweise in einem MySQL-Skript wäre:

insert into t1(col1,col2,col3,...) 
select val1,val2,val3,... 
    from dual 
where [conditional predicate]; 

Sie benötigen Dual Dummy-Tabelle zu verwenden.

In diesem Beispiel wird nur der zweite Einsatz-Anweisung tatsächlich Daten in die Tabelle einfügen:

create table t1(col1 int); 
insert into t1(col1) select 1 from dual where 1=0; 
insert into t1(col1) select 2 from dual where 1=1; 
select * from t1; 
+------+ 
| col1 | 
+------+ 
| 2 | 
+------+ 
1 row in set (0.00 sec) 
+1

Dies sollte die akzeptierte Antwort sein. +1 –

0
UPDATE users SET username='&username', password='&password' where id='&id' 

Diese Abfrage wird Sie bitten, den Benutzernamen, Passwort und ID dynamisch

+0

Diese Abfrage fordert Sie auf, den Benutzernamen, das Passwort und die ID dynamisch einzugeben –

0

eingeben Für die leere Zeile, wie wir Werte in where-Klausel einfügen können

Versuchen Sie diese

UPDATE table_name SET username="",password="" WHERE id ="" 
Verwandte Themen