Я работаю со сложной таблицей базы данных 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 -, указывающую, что я не могу ссылаться на одну и ту же таблицу ни в сценарии подзапроса , ни внутреннего соединения , ни объединения . Я даже создал представление и попытался сослаться на него в операторе обновления, но не решил. Кто-нибудь знает, как мне помочь?