ОБНОВЛЕНИЕ MySQL с ПОДЗАПРОСОМ той же таблицы

Я работаю со сложной таблицей базы данных MySQL, которая собирает данные формы. Я упростил макет в примере таблицы под названием test ниже:

|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      |

Через phpMyAdmin мне нужно сделать глобальные обновления для некоторых таблиц, в частности, я хочу обновить все FieldValue записей в «Соединенные Штаты Америки» с FieldName «страной», которые имеют тот же FormID , что и FieldName «город» и FieldValue "Хьюстон".

Я могу легко отобразить эти записи с помощью оператора SELECT либо с помощью ПОДЗАПРОСА, либо с помощью ВНУТРЕННЕГО СОЕДИНЕНИЯ:

SELECT FieldValue
FROM test
WHERE FormID
IN (
   SELECT FormID
   FROM test
   WHERE FieldName =  "city"
   AND FieldValue =  "Houston"
   )
AND FieldName =  "country"

Или:

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"

Однако я пытаюсь составить свое ОБНОВЛЕНИЕ Я получаю некоторую форму ошибки MySQL -, указывающую, что я не могу ссылаться на одну и ту же таблицу ни в сценарии подзапроса , ни внутреннего соединения , ни объединения . Я даже создал представление и попытался сослаться на него в операторе обновления, но не решил. Кто-нибудь знает, как мне помочь?

19
задан bjornkock 28 April 2012 в 00:41
поделиться