2009-08-07 10 views
8

मुझे SELECT कथन के भीतर मेरे अनुक्रम का उपयोग करने में कोई समस्या है।एसक्यूएल के भीतर अनुक्रम

SELECT 
    c.cust_name, 
    c.site, 
    customer_id_seq.nextval  
FROM 
    customer c 
WHERE 
    c.customer_id IS NULL 
ORDER BY 
    c.site_code ASC 
; 

मुझे एक त्रुटि दे रही है:

  1. 00000 - "sequence number not allowed here" *Cause: The specified sequence number (CURRVAL or NEXTVAL) is inappropriate here in the statement. *Action: Remove the sequence number.

यह शायद स्पष्ट कुछ मैं गलत कर रहा हूँ इसलिए उम्मीद है कि इस एक आसान जवाब होगा।

+0

यह ओरेकल की तरह दिखता है। क्या वह सही है? शायद एक टैग जोड़ना चाहते हैं। – JosephStyons

उत्तर

14

आप ORDER BY के साथ प्रश्नों में अनुक्रमों का उपयोग नहीं कर सकते हैं।

ORDER BY निकालें या एक सबक्वेरी में में डाल दिया:

SELECT q.*, customer_id_seq.nextval  
FROM (
     SELECT c.cust_name, 
       c.site 
     FROM customer c 
     WHERE c.customer_id IS NULL 
     ORDER BY 
       c.site_code ASC 
     ) q 
+2

यह सही है और सीमाओं में से एक है। यदि आप किसी विशेष क्रम में रिकॉर्ड्स के लिए अनुक्रम खींचना चाहते हैं तो क्वेरी (ऑर्डर के साथ) को इनलाइन व्यू में ले जाएं और उस सामग्री का चयन करें + –

+0

'@ ChrisCM' से अनुक्रम: अच्छा बिंदु, जोड़ना। धन्यवाद। – Quassnoi

+0

इन लोगों की मदद के लिए धन्यवाद, इसकी सराहना करें। – fras85

1
IBM Imformix

एक का चयन करें बयान में के लिए

, तो आपको निम्न संदर्भों में NEXTVAL या CURRVAL निर्दिष्ट नहीं कर सकते: जब DISTINCT कीवर्ड

  • कहां में प्रयोग किया जाता है

    • प्रक्षेपण सूची में, ग्रुप बाय, या ऑर्डर द्वारा क्लॉज
    • एक सबक्वायरी
    • जब यूनियन ऑपरेशन एटोर SELECT स्टेटमेंट
  • 1

    क्यों आप अनुक्रम से मूल्यों को प्राप्त करने में कठिनाई के बजाय ROWNUM का उपयोग नहीं करते?

    +0

    हाँ, मैं सोच रहा था कि वह यहां एक अनुक्रम का उपयोग क्यों कर रहा था। उचित प्रतीत नहीं होता है ... –

    +0

    डेटाबेस में अधिकांश ग्राहकों के पास पहले से ही आईडी है इसलिए मुझे उस नंबर से आगे बढ़ने की आवश्यकता है। मैं इन परिणामों को किसी अन्य तालिका में डाल रहा हूं। फिर से धन्यवाद। – fras85

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