2015-11-15 16 views
5

के साथ ओरेकल तालिका कॉलम अपडेट करें मैं पंक्ति संख्या के साथ एक तालिका कॉलम अपडेट करना चाहता हूं। empid कॉलम में प्रत्येक पंक्ति संबंधित पंक्ति संख्या के साथ अद्यतन होना चाहिए। मैंने क्वेरी का पालन करने की कोशिश की।पंक्ति संख्या

UPDATE employee SET empid = row_number(); 

लेकिन यह काम नहीं कर रहा है। कोई उपाय?

+0

यह वाक्य रचनात्मक रूप से गलत है। आप इस तरह 'ROW_NUMBER()' विश्लेषणात्मक फ़ंक्शन का उपयोग नहीं कर सकते हैं। आपको हमें एक उदाहरण के साथ वांछित आउटपुट दिखाने की जरूरत है। क्या आदेश यहां मायने रखता है? –

+0

आदेश – Tom

+1

से कोई फर्क नहीं पड़ता है तो बस 'ROWNUM' का उपयोग करें। –

उत्तर

4

सबसे पहले, यह row_number() फ़ंक्शन के लिए सही वाक्यविन्यास नहीं है, क्योंकि आप over खंड (जिसके परिणामस्वरूप ओआरए -30484 त्रुटि) गायब हैं। यहां तक ​​कि यदि यह था, तो यह काम नहीं करेगा, क्योंकि आप set खंड (आमतौर पर ओआरए -30483 त्रुटि में) विंडो विंडो का उपयोग नहीं कर सकते हैं।

इस USECASE के लिए, तथापि, तुम सिर्फ rownum छद्म स्तंभ इस्तेमाल कर सकते हैं:

UPDATE employee SET empid = ROWNUM; 

SQLFiddle

1

आप निम्नलिखित की तरह कुछ कर सकता है। यदि आवश्यक हो तो पंक्तियों के क्रम में आप ऑर्डर बदल सकते हैं।

UPDATE emp 
SET empid = emp.RowNum 
FROM (SELECT empid, ROW_NUMBER() OVER (ORDER BY empid) AS rowNum FROM employee) emp 
0

अद्यतन कर्मचारी सेट empid = ROW_NUMBER();

सबसे पहले, यह वाक्य रचनात्मक रूप से गलत है।

दूसरा, आप विश्लेषणात्मक फ़ंक्शन का उपयोग विश्लेषणात्मक_clause के बिना नहीं कर सकते हैं।

जैसा कि आपने मेरी टिप्पणी का जवाब दिया है कि आदेश आपके लिए कोई फर्क नहीं पड़ता है, आप बस ROWNUM का उपयोग कर सकते हैं।

UPDATE employee SET empid = ROWNUM; 

यह पंक्तियों को यादृच्छिक रूप से चुनकर छद्म-कॉलम मान असाइन करेगा। चूंकि आप EMPID असाइन कर रहे हैं, तो मैं सुझाव दूंगा कि आपको ऑर्डर करने पर विचार करना चाहिए।

आमतौर पर कर्मचारी आईडी SEQUENCE ऑब्जेक्ट का उपयोग करके उत्पन्न होते हैं। वहाँ ऑटो वेतन वृद्धि की कार्यक्षमता को लागू करने के दो तरीके हैं:

0

आप भी इस

create table your_table_name as 
select row_number() over(order by 1) as serial_no, a.* from your_query a 
कर सकता है

यह लिखते समय सीरियल नंबर बनाता है टेबल खुद ही। (ध्यान दें कि यह पीके के रूप में सेट नहीं है यदि आप इसे पीके के रूप में कार्य करना चाहते हैं)

संबंधित मुद्दे