Estoy trabajando con una tabla de base de datos MySQL compleja que recopila datos de formulario. He simplificado el diseño de una tabla de ejemplo llama prueba a continuación:ACTUALIZACIÓN MySQL con SUBQUERÍA de la misma tabla
|FormID|FieldName| FieldValue |
| 1 | city | Houston |
| 1 | country | USA |
| 2 | city | New York |
| 2 | country |United States|
| 3 | property| Bellagio |
| 3 | price | 120 |
| 4 | city | New York |
| 4 |zip code | 12345 |
| 5 | city | Houston |
| 5 | country | US |
A través de phpMyAdmin Necesito hacer cambios globales para algunas tablas, específicamente Quiero actualización todos ValorDelCampo entradas a "Estados Unidos de América" con elNombreCampo 'país' que tienen el mismo formid como el NombreCampo 'ciudad' y el ValorDelCampo 'Houston'.
puedo fácilmente pantalla estas entradas con una instrucción SELECT, ya sea usando una sub consulta o mediante el uso de un INNER JOIN:
SELECT FieldValue
FROM test
WHERE FormID
IN (
SELECT FormID
FROM test
WHERE FieldName = "city"
AND FieldValue = "Houston"
)
AND FieldName = "country"
O:
SELECT a.FieldValue
FROM test a
INNER JOIN test b ON a.FormID = b.FormID
WHERE a.FieldName = "country"
AND b.FieldName = "city"
AND b.FieldValue = "Houston"
Sin embargo trato de componer mi ACTUALIZACIÓN instrucción Obtengo algún tipo de error MySQL que indica que no puedo hacer referencia a la misma tabla en una subconsulta o unión interna o unión escenario. Incluso he creado una vista de y traté de hacer referencia a esto en la declaración de actualización, pero no resolvió. ¿Alguien tiene alguna idea de cómo ayudarme?
posible duplicado de [Mysql error 1093 - No se puede especificar la tabla de destino para la actualización en la cláusula FROM] (http://stackoverflow.com/questions/45494/mysql-error- 1093-cant-especifica-tar get-table-for-update-in-from-clause) – Ian