フォーム データを収集する複雑な 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 "city" およびFieldValue "Houston"と同じFormIDを持つFieldName "country" を持つ"United States of America"に更新したいと考えています。 .
これらのエントリは、SUBQUERY または INNER JOIN を使用して、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"
ただし、UPDATEステートメントを作成しようとすると、サブクエリ、内部結合、またはユニオンのいずれかのシナリオで同じテーブルを参照できないことを示す何らかの形式の MySQL エラーが発生します。ビューを作成し、更新ステートメントでこれを参照しようとしましたが、解決しませんでした。誰かが私を助ける方法を知っていますか?