/ / वैकल्पिक अद्यतन एसक्यूएल क्वेरी - एसक्यूएल, ओरेकल

वैकल्पिक अद्यतन एसक्यूएल क्वेरी - एसक्यूएल, ऑरैकल

मैं इस प्रश्न के लिए एक विकल्प की तलाश में हूं। मुझे पता है कि ऐसी क्वेरी ओरेकल में अमान्य पहचानकर्ता के साथ खत्म हो जाएगी। तो कृपया मुझे एक और तालिका में किसी अन्य फ़ील्ड से दायर एक को अपडेट करने के लिए एक ही प्रश्न दें।

update RBT_CMP_RECOM_9304
set FIRST_RECOM_NAME=(select rbt_cmp_base_code.RBT_NAME
from rbt_cmp_base_code
where rbt_cmp_base_code.RBT_CODE=RBT_CMP_RECOM_9304.FIRST_RECOM)
where rbt_cmp_base_code.RBT_CODE=RBT_CMP_RECOM_9304.FIRST_RECOM;

जानकारी के लिए:

RBT_CMP_RECOM_9304=(firt_recom,first_recom_name)

RBT_CMP_BASE_CODE = (rbt_code, rbt_name)

जब मैं कोशिश करता हूं तो मुझे यह त्रुटि मिलती है:

ओआरए -00 9 04: आरबीT_CMP_BASE_CODE.RBT_CODE: अमान्य पहचानकर्ता

सादर।

उत्तर:

जवाब के लिए 3 № 1

सबकुछ दोहराना है:

update RBT_CMP_RECOM_9304 r
set FIRST_RECOM_NAME = (select bc.RBT_NAME
from rbt_cmp_base_code bc
where bc.RBT_CODE = r.FIRST_RECOM
)
where exists (select 1
from rbt_cmp_base_code bc
where bc.RBT_CODE = r.FIRST_RECOM
);

संपादित करें:

अगर आपको एक त्रुटि मिल रही है जो एक से अधिक हैपंक्ति वापस आती है, तो आपको यह तय करना होगा कि कौन सा मूल्य है। आपके कोड में कुछ भी सुझाव नहीं देता है कि यह एक मुद्दा हो सकता है (संकेत: नमूना डेटा और वांछित परिणाम हमेशा एक प्रश्न में मदद करते हैं)।

सबसे आसान समाधान उपयोग और एकत्रीकरण समारोह है:

update RBT_CMP_RECOM_9304 r
set FIRST_RECOM_NAME = (select max(bc.RBT_NAME)
from rbt_cmp_base_code bc
where bc.RBT_CODE = r.FIRST_RECOM
)
where exists (select 1
from rbt_cmp_base_code bc
where bc.RBT_CODE = r.FIRST_RECOM
);

लेकिन आप इसे ठीक करना चाहते हैं rbt_cmp_base_code तालिका है इसलिए इसमें डुप्लीकेट नहीं हैं। तालिका के नाम से, ऐसा लगता है कि प्रति कोड एक पंक्ति होनी चाहिए।