Anda mendapatkan kesalahan karena terdapat lebih dari satu baris di db2.CENSUS
untuk setidaknya nilai uid
. (Mungkin ada lebih banyak.) Anda dapat mengetahui nilai mana dari uid
menyebabkan masalah dengan melakukan hal berikut:
SELECT uid, COUNT(*)
FROM db2.census
GROUP BY uid
HAVING COUNT(*) > 1;
Pada saat itu Anda dapat melakukan beberapa hal. Anda dapat menghapus baris tambahan (mungkin tidak banyak dan Anda tetap tidak menginginkannya) dan memperbarui seperti pada kueri asli Anda, atau Anda dapat menggunakan agregasi dalam subkueri yang Anda gunakan untuk memperbarui, mis.:
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';
Selain itu, dengan kueri Anda seperti di atas, jika tidak ada nilai notes
yang sesuai di db2.CENSUS
untuk beberapa nilai db1.CENSUS.uid
, db1.CENSUS.notes
akan disetel ke NULL
. Mungkin itu perilaku yang Anda inginkan? Jika tidak, Anda akan menginginkan sesuatu seperti berikut:
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 );