2010-02-28 8 views
7

Esto no funciona:¿Cómo agregar una cláusula where en una instrucción de inserción de MySQL?

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

Alguna idea de cómo estrechar la inserción de una fila determinada por id?

+2

Downvoted. Tal como está, el título es incorrecto o la respuesta aceptada. De todos modos, Google me lleva aquí para * insert *, pero la respuesta aceptada es * update *. –

Respuesta

18

En una instrucción de inserción que no tendría una fila existente para hacer un donde claues en? Está insertando una nueva fila, ¿quiso hacer una actualización?

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

"no tendrías una hilera existente para hacer un dónde claues?" Respuesta perfecta. –

+1

Quiero hacer una cláusula where en el resto de la tabla. E.g 'insertar ... donde cuenta (..) <10'. –

1

Creo que está buscando UPDATE y no insertar?

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

Prueba esto:

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

O si en realidad estás tratando de insertar:

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' 

Esto funcionará sólo si el campo id es único/PK (no PK compuesta sin embargo) Además, se ingresará si no hay id de valor 1 se encuentra y actualizar lo contrario el registro con id 1 si existe

3

Para agregar una cláusula WHERE dentro de una instrucción INSERT simplemente;

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

er, ¿podría agregar algo de información sobre lo que está pasando aquí? ¿Por qué la inserción necesita un DONDE? – Martin

+1

¿A quién le importa * por qué *? La pregunta era * "¿Cómo agregar una cláusula Where en una instrucción MySQL Insert?" * –

8

Una inserción condicional para uso típicamente en una secuencia de comandos de MySQL sería:

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

Es necesario utilizar tabla ficticia dual.

En este ejemplo, sólo el segundo inserto-declaración realmente insertar datos en la tabla:

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

Esta debería ser la respuesta aceptada. +1 –

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

Esta consulta le pedirá que introduzca el nombre de usuario, contraseña y el ID de forma dinámica

+0

Esta consulta le pedirá que ingrese el nombre de usuario, la contraseña y la identificación de forma dinámica –

0

Para la fila vacía, cómo podemos insertar valores en la cláusula

Prueba esto

UPDATE table_name SET username="",password="" WHERE id ="" 
Cuestiones relacionadas