【发布时间】:2012-05-08 17:27:11
【问题描述】:
我正在处理一个收集表单数据的复杂 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 到“美国” “国家”与 FieldName“城市”和 FieldValue“休斯顿”具有相同的 FormID。
我可以通过使用 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 错误,表明我无法在 子查询 或 inner 中引用同一个表加入或联合方案。我什至创建了一个 view 并尝试在更新语句中引用它,但没有解决。 有谁知道如何帮助我?
【问题讨论】:
-
你能选择一个答案或精确你的需求吗?
标签: mysql sql phpmyadmin