UPDATE AggregatedData SET datenum="734152.979166667",
Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Funciona si datenum
existe, pero quiero insertar estos datos como una nueva fila si datenum
no existe.
ACTUALIZAR
el datenum es único pero esa no es la clave principal
Respuestas:
Jai tiene razón en que debes usar
INSERT ... ON DUPLICATE KEY UPDATE
.Tenga en cuenta que no necesita incluir datenum en la cláusula de actualización ya que es la clave única, por lo que no debería cambiar. Debe incluir todas las demás columnas de su tabla. Puede utilizar la
VALUES()
función para asegurarse de que se utilizan los valores adecuados al actualizar las otras columnas.Aquí está su actualización reescrita usando la
INSERT ... ON DUPLICATE KEY UPDATE
sintaxis adecuada para MySQL:fuente
UNIQUE
restricciónTimestamp
mediante el uso deALTER TABLE AggregatedData ADD UNIQUE (Timestamp)
Intente usar esto :
fuente
Tuve una situación en la que necesitaba actualizar o insertar en una tabla de acuerdo con dos campos (ambas claves externas) en los que no podía establecer una restricción ÚNICA (por lo que INSERT ... ON DUPLICATE KEY UPDATE no funcionará). Esto es lo que terminé usando:
Este ejemplo se extrajo de una de mis bases de datos, con los parámetros de entrada (dos nombres y un número) reemplazados por [hasher_name], [hash_name] y [new_value]. El SELECT ... LIMIT 1 anidado extrae el primero del registro existente o un nuevo registro (last_recogs.id es una clave primaria de autoincremento) y lo usa como entrada de valor en REPLACE INTO.
fuente