我試圖創建一個查詢,但我被卡住了。在一個子集內將值從一個字段複製到另一個字段
上下文 在我的網站上,用戶的個人資料上有不同的字段。其中一個領域是通訊的複選框。現在我們要發佈第二份通訊。每個訂閱了時事通訊的用戶都將自動訂閱第二個通訊,並可選擇取消訂閱。未訂閱原始時事通訊的用戶也不應收到第二期通訊。
表 這些字段存儲在表「Profile_field」中。此表有3列
- FID =>字段Id(這可能是配置文件的名稱,地址,通訊,...)
- 的uid =>用戶ID
- 值
所以爲每一位用戶,我需要複製的字段1的值字段2
查詢到目前爲止
UPDATE profile_values AS copy
SET value =
(SELECT value
FROM (Select Value
FROM profile_values as original
WHERE fid = 12
) AS temp
)
WHERE fid=37
;
現在,這給我的錯誤:
ERROR 1242 (21000): Subquery returns more than 1 row
我明白爲什麼我有這個。這是因爲在我的子查詢中,我沒有考慮到由於用戶不同而返回多個結果。換句話說,我不考慮用戶。
所以,我想是這樣
FROM (Select Value
FROM profile_values as original
WHERE fid = 12
) AS temp
WHERE uid=copy.uid
但是,這並不工作。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"temp" WHERE uid=copy.uid)where fid=37' at line 1
那麼如何在用戶查詢中考慮用戶呢?
此致
斯蒂芬·塞利斯
我建議重新設計你的數據庫考慮到你有很多用戶和訂閱之間一對多的關係賬戶。 –
這是通過舊的Drupal安裝,所以我不能。如果不是,我會同意你的意見。 –