2010-02-28 15 views
7

Questo non funziona:Come aggiungere una clausola where in un'istruzione MySQL Insert?

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

Tutte le idee come restringere l'inserimento di una particolare riga per id?

+2

Downvoted. Così com'è, o il titolo è sbagliato, o la risposta accettata. Ad ogni modo, Google mi guida qui per * inserire *, ma la risposta accettata riguarda * aggiornamento *. –

risposta

18

in un'istruzione INSERT non si avrebbe una riga esistente per fare un in cui Claues su? Stai inserendo una nuova riga, intendevi fare una modifica dell'aggiornamento?

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

"non avresti una riga esistente per fare un where dove claues?" Risposta perfetta –

+1

Voglio fare una clausola where sul resto della tabella. E.g 'insert ... where count (..) <10'. –

1

Penso che stiate cercando UPDATE e non inserite?

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

Prova questo:

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

Oppure, se si sta effettivamente cercando di inserire:

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' 

Questo funziona solo se il campo id è unico/pk (non composito PK però) Inoltre, verrà inserito se nessun id di valore 1 viene trovato e aggiornare altrimenti il ​​record con id 1 se esiste.

3

Per aggiungere semplicemente una clausola WHERE all'interno di un'istruzione INSERT;

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

ehm, potresti aggiungere qualche informazione su cosa sta succedendo qui? Perché l'inserto ha bisogno di un WHERE? – Martin

+1

A chi importa * perché *? La domanda era * "Come aggiungere una clausola where in un'istruzione MySQL Insert?" * –

8

Un inserto condizionale per l'uso in genere in uno script di MySQL sarebbe:

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

È necessario utilizzare tavolo fittizio doppio.

In questo esempio, solo il secondo inserto-dichiarazione sarà effettivamente inserire dati nella tabella:

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

Questa dovrebbe essere la risposta accettata. +1 –

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

Questa query vi chiederà di inserire il nome utente, la password e id dinamicamente

+0

Questa query ti chiederà di inserire il nome utente, la password e l'ID dinamicamente –

0

Per riga vuota come è possibile inserire valori su where clausola

Prova questo

UPDATE table_name SET username="",password="" WHERE id ="" 
Problemi correlati