gpt4 book ai didi

mysql - 将值从一个字段复制到子集中的另一个字段

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:04 24 4
gpt4 key购买 nike

我正在尝试创建一个查询,但我卡住了。

上下文在我的网站上,用户的个人资料中有不同的字段。这些字段之一是通讯的复选框。现在我们要制作第二份时事通讯。每个订阅时事通讯的用户都将自动订阅第二个时事通讯,并可以选择取消订阅。未订阅原始时事通讯的用户也不应收到第二份时事通讯。

表格这些字段存储在表“Profile_field”中。该表有 3 列

  • fid => 字段 ID(这可以是个人资料名称、地址、时事通讯……)
  • uid => 用户 ID
  • 值(value)

所以对于每个用户,我需要将 field1 的值复制到 field2

到目前为止的查询

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

那么如何在我的查询中考虑用户呢?

亲切的问候

斯蒂芬·塞利斯

最佳答案

对于我将使用的更新:

UPDATE profile_values pv
JOIN (SELECT value,
uid
FROM profile_values
WHERE fid = 12) AS current_field_values
ON current_field_values.uid = pv.uid
SET pv.value = current_field_values.value
WHERE pv.fid = 37

关于mysql - 将值从一个字段复制到子集中的另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18443732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com