La consulta MySQL Insert no funciona con la cláusula WHERE
¿Qué hay de malo en esta consulta?
INSERT INTO Users( weight, desiredWeight ) VALUES ( 160, 145 ) WHERE id = 1;
Funciona sin la WHERE
cláusula. Parece que olvidé mi SQL.
La sintaxis INSERT de MySQL no admite la cláusula WHERE, por lo que su consulta tal como está fallará. Suponiendo que su id
columna sea clave única o principal:
Si está intentando insertar una nueva fila con ID 1, debería usar:
INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);
Si está intentando cambiar los valores de peso/peso deseado para una fila existente con ID 1, debería usar:
UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;
Si lo desea, también puede usar la sintaxis INSERT .. ON DUPLICATE KEY de esta manera:
INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145
O incluso así:
INSERT INTO Users SET id=1, weight=160, desiredWeight=145 ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145
También es importante tener en cuenta que si su id
columna es una columna de incremento automático, entonces también puede omitirla de su INSERT por completo y dejar que MySQL la incremente normalmente.
No se puede combinar una cláusula WHERE con una cláusula VALUES. Tienes dos opciones hasta donde yo sé:
INSERTAR especificando valores
INSERT INTO Users(weight, desiredWeight) VALUES (160,145)
INSERTAR usando una declaración SELECT
INSERT INTO Users(weight, desiredWeight) SELECT weight, desiredWeight FROM AnotherTable WHERE id = 1