आपको त्रुटि मिल रही है क्योंकि 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 );