У вас больше строк, которые соответствуют условиям, чем вы ожидаете.
Вы можете найти поврежденные строки, выполнив:
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
.В конце концов, что произойдет, если пользователь обновит свое регистрационное имя?