我正在处理更新声明,但我一直收到此错误。任何人都有任何关于如何解决它的建议。我尝试过去一小时内从类似问题中寻找解决方案,但似乎无法让它们发挥作用。这是我的sql statemtent:
UPDATE T_SUBSCRIBERS
SET FULLNAME=
(SELECT CONCAT (T_REGISTERED_FNAME, T_REGISTERED_LNAME) FROM T_REGISTERED WHERE
T_REGISTERED_UID = T_SUBSCRIBERS.T_SUBSCRIBERS_UID);
答案 0 :(得分:0)
**像这样更新你的sql:**
UPDATE T_SUBSCRIBERS
SET FULLNAME=
(SELECT CONCAT (T_REGISTERED_FNAME, T_REGISTERED_LNAME) FROM T_REGISTERED WHERE
T_REGISTERED_UID = T_SUBSCRIBERS.T_SUBSCRIBERS_UID AND ROWNUM = 1);
答案 1 :(得分:0)
您拥有的条件数量超出预期。
您可以通过执行以下操作找到有问题的行:
select T_REGISTERED_UID, count(*)
from T_REGISTERED
group by T_REGISTERED_UID
having count(*) > 1;
如果您只想要一个快速而肮脏的解决方案,请使用limit
:
UPDATE T_SUBSCRIBERS s
SET FULLNAME = (SELECT CONCAT(T_REGISTERED_FNAME, T_REGISTERED_LNAME)
FROM T_REGISTERED r
WHERE r.T_REGISTERED_UID = s.T_SUBSCRIBERS_UID
LIMIT 1
);
但一般情况下,最好不要在不同的表中重复这样的列值。如果需要全名,只需加入T_REGISTERED
即可。毕竟,如果用户更新其注册名称会发生什么?