2011-07-01 4 views
7

¿Cómo copio una selección de filas de una tabla mySql e inserto con solo el valor de la clave modificada? ¿Puedo seleccionar e insertar en la misma consulta?mySql copia las filas en la misma tabla con el valor clave cambiado (no sobrescribe las existentes)

Para ser más precisos, lo que quiero sería el siguiente:

cols de tabla, ID y ISO3 son claves:
[ID] [ISO3] [Texto]
1, ENU, un texto en Inglés
2, ENU, Otro texto en Inglés
3, ENU, bla bla
1, JPN, 与 え ら れ た 枠

Después de la inserción quiero mi mesa para tener este aspecto:
1, ENU, Un texto en inglés
2, ENU, Otro texto en Inglés
3, ENU, bla bla
1, JPN, 与 え ら れ た 枠
2, JPN, Otro texto en Inglés
3, JPN, bla bla

Respuesta

18
INSERT INTO your_table (ID, ISO3, TEXT) SELECT ID, 'JPN', TEXT FROM your_table WHERE ID IN (list_of_ id's) 

Si desea para cambiar un valor en una celda, solo escriba el valor en lugar de seleccionar de la tabla (como hice con 'JPN').

+0

gracias, me llevó en dirección correcta – Muleskinner

+4

Para que esto funcione, parece que los valores deben ser retirados – Muleskinner

+2

Para que quede claro, esto es lo que tenía: INSERT INTO mi_tabla (col1, col2, col3) SELECCIONE "mynewvalue", col2, col3 FROM my_table donde col2 = "value" –

4

Si la clave es aUTO_INCREMENT, y tiene una estructura de tabla como primary_key | col1 | col2 | col3 entonces usted puede hacer algo en la línea de

INSERT INTO table (
    col1, col2, col3 
) SELECT col1, col2, col3 
FROM table 
WHERE primary_key IN(1, 2, 45, 54, 774, 4434 /* etc */); 
0

que puede hacer

insert into your_table (SELECT field1, field2,(changed_value_for_field3) as field3 FROM your_table where your_condition); 
Cuestiones relacionadas