2008-09-23 13 views
5

मैं इन्फोर्मिक्स डेटाबेस का उपयोग कर रहा है, मैं एक प्रश्न है जो आप भी क्वेरीपंक्ति की संख्याओं

तरह

select row_number(),firstName,lastName 
from students; 

row_number() firstName lastName 
1   john  mathew 
2   ricky  pointing 
3   sachin tendulkar 

यहाँ firstName, lastName के साथ एक पंक्ति संख्या उत्पन्न कर सकता है चाहता हूँ से कर रहे हैं डेटाबेस, जहां एक क्वेरी में पंक्ति संख्या उत्पन्न होती है।

+0

यह एक जवाब का चयन करने के लिए विनम्र है - या अगर कुछ आपके सवाल का जवाब है, यह तो यह कर सकते हैं अपने प्रश्न संपादित करने के लिए समझदार है समझा जाए। आपको सबसे अच्छा उत्तर चुनने का लक्ष्य रखना चाहिए - कृपया। –

उत्तर

1

मुझे लगता है कि निम्न कोड का उपयोग करने का सबसे आसान तरीका होगा और तदनुसार इसकी वापसी को समायोजित करना होगा। पंक्तिबद्ध करें, * तालिका

यह मेरे लिए काम करता है लेकिन कृपया ध्यान दें कि यह क्वेरी में पंक्ति संख्या नहीं, डेटाबेस में पंक्ति संख्या वापस करेगा।

पीएस यह Experts Exchange से एक स्वीकार्य उत्तर है।

+1

सदस्यता के बिना 'स्वीकृत उत्तर' नहीं देख सकता - जो कि नि: शुल्क भी है, कम से कम एक उपद्रव है। –

2

आप एक तालिका में ROWID का उपयोग करने में सक्षम नहीं हो सकते हैं जो कई डीबीएस स्पेस में विभाजित है, इसलिए ROWID का उपयोग करने वाला कोई भी समाधान विशेष रूप से पोर्टेबल नहीं है। यह भी दृढ़ता से निराश है।

आप अपने स्रोत तालिका में एक सीरियल स्तंभ (जो एक सामान्य अवधारणा के रूप में इस लागू करने के लिए एक बेहतर तरीका है), नहीं है, तो CREATE SEQUENCE पर एक नज़र है, जो अधिक या कम एक Orrible समारोह के बराबर है जो अनन्य संख्या उत्पन्न करता है जब से चयन किया जाता है (जैसा कि सीरियल के विपरीत होता है, जो पंक्ति को इंसर्ट किए जाने पर अद्वितीय संख्या उत्पन्न करता है)।

+0

एक नोट: ifx (कम से कम) 9, 10, और 11 में सीरियल डिफ़ॉल्ट रूप से अद्वितीय नहीं है। यह लगभग 1. – hometoast

6

सबसे अच्छा तरीका एक (नया प्रारंभिक) अनुक्रम का उपयोग करना है।

begin work; 
create sequence myseq; 
select myseq.nextval,s.firstName,s.lastName from students s; 
drop sequence myseq; 
commit work; 
2

एक मेज 3 कॉलम के साथ Table3 कहा जाता है को देखते हुए:

colnum name datatype 
======= ===== === 
1  no  text; 
2  seq number; 
3  nm  text; 

नोट: seq टेबल आरोही क्रम में अनन्य मान हैं कि भीतर एक क्षेत्र है। संख्याओं को संगत नहीं होना चाहिए।

क्वेरी परिणाम के साथ एक rownumber (ROWNUM) वापस जाने के लिए क्वेरी है

SELECT table3.no, table3.seq, Table3.nm, 
     (SELECT COUNT(*) FROM Table3 AS Temp 
     WHERE Temp.seq < Table3.seq) + 1 AS RowNum 
    FROM Table3; 
+0

पर लपेट जाएगा। स्वरूपण वांछित होने के लिए कुछ छोड़ देता है। स्थिर-चौड़ाई उदाहरण सामग्री प्राप्त करने के लिए, 'कोलन नाम डेटाटाइप' जैसी इंडेंट सामग्री 4 रिक्त स्थान से इंडेंट की गई है। सादा पाठ कम इंडेंट कम छोड़ दें। –

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