2011-12-01 20 views
16

Tengo una tabla de datos para bicicletas y quiero añadir diferentes precios a diferentes tipos de bicicletas mediante consultas SQL, pero lo que tengo me da un error de sintaxis:valores de la inserción en filas específicas con SQL

INSERT INTO bike (full_day) 
VALUES (10) 
WHERE bike_type = 'mens_hybrid'; 

Lo está mal con este código?

Respuesta

39

Un es solo para crear registros completamente nuevos, no para completar datos en los existentes. Lo que necesita es un UPDATE statement, que actualiza un registro existente:

UPDATE bike SET full_day = 10 WHERE bike_type = 'mens_hybrid'; 

(Nota: la siguiente es una versión anterior de esta respuesta, desde antes de que fuera claro para mí lo que el cartel original estaba tratando de hacer Lo dejo aquí porque muchas personas que originalmente respondieron esta pregunta no parecían darse cuenta del problema al escribir INSERT ... VALUES (...) WHERE, lo que me hace pensar que esta explicación podría ser útil para algunas personas que se encuentran con esta pregunta.)


Esa declaración ent no tiene sentido. Un INSERT no puede tomar una cláusula WHERE, porque WHERE se refiere a registros existentes, y INSERT crea nuevos.

(Para evitar la confusión potencial: existe una cosa tal como INSERT INTO ... SELECT ..., donde los registros para insertar están determinados por una consulta SELECT en lugar de por una expresión VALUES, y en ese caso la consulta SELECT puede, por supuesto, tener una . WHERE cláusula Pero en ningún caso la cláusula WHERE pertenecen a la declaración INSERT directamente)

+0

¿Cómo puedo añadir el valor 10 a la columna sólo en el modelo de moto es hombre en bicicleta de montaña – Matt

+0

@ Matt:. no sé si lo viste, pero edité mi respuesta; todo, desde la palabra ** Actualizar ** en adelante, es nuevo, y yo * creo * es lo que estás buscando. Si no es así, puede que tenga que publicar algunos datos de muestra, que muestren cómo se verá su tabla antes y después de ejecutar la declaración. – ruakh

+0

@Matt: Además, ¿qué DBMS estás usando? (MySQL? PostgreSQL? Oracle? SQL Server?) Puedo agregar enlaces a la documentación relevante, que probablemente encuentre útil, pero las reglas detalladas dependen un poco del DBMS, por lo que no quiero publicar (decir) Oracle documenta si está usando (digamos) MySQL. – ruakh

Cuestiones relacionadas