Está recibiendo el error porque existe más de una fila en db2.CENSUS
por al menos el valor de uid
. (Podría haber más). Puede averiguar qué valores de uid
están causando el problema al hacer lo siguiente:
SELECT uid, COUNT(*)
FROM db2.census
GROUP BY uid
HAVING COUNT(*) > 1;
En ese momento puedes hacer varias cosas. Puede eliminar las filas adicionales (tal vez no haya tantas y no las quiera de todos modos) y actualizar como en su consulta original, o puede usar la agregación en la subconsulta que está usando para actualizar, por ejemplo:
update db1.CENSUS set (notes)
=
(
select MAX(notes)
from db2.CENSUS cen
where db1.CENSUS.uid = cen.uid
)
where headcount_ind = 'Y' and capture_FY = '2015';
Además, con su consulta como está arriba, si no hay un valor correspondiente de notes
en db2.CENSUS
para algún valor de db1.CENSUS.uid
, db1.CENSUS.notes
se establecerá en NULL
. ¿Quizás ese es el comportamiento que quieres? Si no, querrá algo como lo siguiente:
UPDATE db1.census c1
SET c1.notes = ( SELECT max(c2.notes)
FROM db2.census c2
WHERE c2.uid = c1.uid )
WHERE c1.headcount_ind = 'Y'
AND c1.capture_FY = '2015'
AND EXISTS ( SELECT 1 FROM db2.census c2
WHERE c2.uid = c1.uid );