db2.CENSUS
に複数の行が存在するため、エラーが発生します 少なくともuid
の値の場合 。 (もっとあるかもしれません。)uid
のどの値を把握することができます 次の手順で問題が発生しています:
SELECT uid, COUNT(*)
FROM db2.census
GROUP BY uid
HAVING COUNT(*) > 1;
その時点で、あなたは多くのことをすることができます。余分な行を削除して(多分それほど多くなく、とにかくそれらを望まない)、元のクエリのように更新するか、更新に使用しているサブクエリで集計を使用できます。例:
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';
さらに、notes
の対応する値がない場合は、上記の方法でクエリを実行します db2.CENSUS
内 db1.CENSUS.uid
の値の場合 、db1.CENSUS.notes
NULL
に設定されます 。多分それはあなたが望む行動ですか?そうでない場合は、次のようなものが必要になります。
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 );